Как правило, во время синхронного запроса AJAX браузер блокируется, и при блокировке браузера не может быть выполнен JavaScript. Из-за этого jQuery не может прервать запрос ajax после установленного времени ожидания, потому что jQuery - это javascript, и javascript не может быть выполнен, пока браузер заблокирован. Это основной недостаток синхронного AJAX.
В любое время, когда вам может потребоваться синхронный запрос, вы должны вместо этого использовать асинхронный с тем, что должно произойти впоследствии в обратном вызове, как показано ниже;
$.ajax({
url : 'webservices.php',
timeout: 200,
dataType : 'json',
data : {
'cmd' : 'ping',
},
success : function(data, textStatus) {
$.ajax({
url : 'webservices.php',
async: false,
dataType : 'json',
data : {
'cmd' : 'feedback',
'data' : data,
'userinfo' : window.dsuser
},
success : function(data, textStatus) {
// success!
Status("Thanks for the feedback, "
+ window.dsuser.user + "!");
}
});
},
error : function(jqhdr, textStatus,
errorThrown) {
Status("There was trouble sending your feedback. Please try again later");
}
});