jQuery.ajax() timing out intermittently

jQuery.ajax() timing out intermittently

I have an ajax call that is timing out intermittently. I am doing ajax to a PHP site, I have put print statements at the exit() in the PHP file. The output shows the PHP site is responding correctly. The site responds typically in under two seconds.

The error is at this line: if (jqXHR.status === 0) { alert(exception + ' Try again');} with exception containing :"Timeout"

Here is the jquery call.
                $.ajax({type: 'POST', url: '<?php echo WP_PLUGIN_URL . '/ip3pdm/pdm/navigation.php'; ?>',
                data: {checkBoxes:this.checked,
                    form2Data:$("form :checkbox").serialize(),
                    WP_PLUGIN_URL:'<?php echo WP_PLUGIN_URL; ?>',
                    siteUrl:'<?php echo site_url(); ?>',
                    homeUrl:'<?php echo home_url(); ?>'} ,
                success: function(data){
                    var end = new Date().getTime();
                    var elapsed = end - start;
                    //$("div.log" ).text("");
                    divLog.html("TIMING " + elapsed + "<br />" + data.timingOut);
                    //$( "div.log" ).css({"color": "red", "font-size":"100%"});
                    //$("#LoadingImage").hide();
                    $("#ip3ProductData").html(data.text);
                    $("#TotalPages").text (Number(data.numPages));
                    $("#TotalPagesHidden").val (data.numPages);
                    $("#totalAssetsLabel").text (Number(data.total));
                    $("#totalAssets").val (data.total);
                    $("#GoToPageTextBox").val("1");
                    $("#GoToPageHidden").val("1");
                    ip3SideNavLoad ();
                    //ip3Ready2 ();
                    arrows ();},
                dataType: "json",
                timeout: 100000,
                error: function(jqXHR, exception) {
                    if (jqXHR.status === 0) {
                        alert(exception + ' Try again');
                    } else if (jqXHR.status == 404) {
                        alert('Requested page not found. [404]');
                    } else if (jqXHR.status == 500) {
                        alert('Internal Server Error [500].');
                    } else if (exception === 'parsererror') {
                        alert('Requested JSON parse failed.');
                    } else if (exception === 'timeout') {
                        alert('Time out error.');
                    } else if (exception === 'abort') {
                        alert('Ajax request aborted.');
                    } else {
                        alert('Uncaught Error.\n' + jqXHR.responseText);
                    }},
                async: true});