次のように、同期的に呼び出そうとする ajax アドレス検証関数があります。
function validate_address(address, city, state, zip) {
return $.ajax({
type: 'POST',
url: '/ajax/address',
data: {
address: address,
city: city,
state: state,
zip: zip
},
dataType: "json",
cache: false,
async: false
}).responseText;
}
関数を呼び出す前に、回転する gif を表示し、関数の後に非表示にします。
$('#spinner').show();
var res = validate_address(address, city, state, zip);
$('#spinner').hide();
問題は、 ajax 呼び出しが完了した後に関数show()
と関数の両方が呼び出されることです。hide()
サーバー側の ajax 呼び出しに 5 秒の遅延を追加して、これを確認しました。このシーケンスをトリガーしてから 5 秒後に、両方ともすぐに呼び出されましたshow()
。hide()
あなたが私を呼び出す前に、同期リクエストが推奨されていないことを知っています. この場合、同期呼び出しを使用する必要があります。ここで何が起こっているのか、それを修正する方法を試しています。