非同期 ajax リクエストの前に関数を実行しようとしています。ただし、非同期リクエストが応答を取得した後に関数が実行されます。
この問題を解決する方法はありますか?
block();
ajaxRequest= $.ajax({
url: siteURL+'includes/ajax/action.php',
type: "POST",
async: false,
data: {productID : productID},
dataType: "json"
});
ajaxRequest.done(function(data) {
block(true);
if (data === false) {
alerts('error title','error info here', 'error', 200);
return false;
}
});
ajaxRequest.fail(function(jqXHR, textStatus) {block(true); alerts('error title','error info','error');});
confirm();
これらのコードの後に、さらに関数を実行します。ただし、前に述べたように、block();
関数は async ajax リクエストが応答を受け取るまで待機しています。
非同期で実行しないblock()
と、 とconfirm()
関数が同時に実行されるためreturn false;
、すべての意味が失われます。
PSフォームが送信されたときにこれらのコードを実行するため、非同期リクエストが失敗した場合、その後に他のコードを実行したくありません。ただし、非同期で実行されている場合はblock()
、応答が返されるまで待機しています。