我有一个试图同步调用的 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();
问题是show()
和hide()
函数都在 ajax 调用完成后被调用。
我通过在服务器端的 ajax 调用中添加 5 秒延迟来验证这一点。show()
并且hide()
在我触发此序列后 5 秒后立即被调用。
在你打电话给我之前,我知道不鼓励同步请求。在这种情况下,我必须使用同步调用。我只是在尝试这里发生了什么以及如何解决它。