基本上,在同步 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");
}
});