基本的に、同期 ajax リクエスト中はブラウザがブロックされ、ブラウザがブロックされている間は JavaScript を実行できません。このため、jQuery は javascript であり、ブラウザーがブロックされている間は javascript を実行できないため、設定されたタイムアウト後に jQuery は ajax 要求を中止できません。これは、同期 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");
}
});