gpt4 book ai didi

javascript - JQuery AJAX 同步请求行为

转载 作者:行者123 更新时间:2023-11-28 20:43:51 24 4
gpt4 key购买 nike

我有一个 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 秒的延迟来验证这一点。在我触发此序列 5 秒后,show()hide() 都立即被调用。

在你叫我出来之前,我知道不鼓励同步请求。在这种情况下,我必须使用同步调用。我只是尝试一下这里发生了什么以及如何解决它。

最佳答案

您已经从 ajax 函数返回了延迟,因此只需使用 done() :

$('#spinner').show();
validate_address(address, city, state, zip).done(function(data) {
res = data;
$('#spinner').hide();
});

这甚至可以用于异步请求?

如果旋转器的显示仍然很慢,并且您希望进一步降低用户体验,您可以随时使用回调:

$('#spinner').show(1000, function() {
validate_address(address, city, state, zip).done(function(data) {
res = data;
$('#spinner').hide();
});
});

关于javascript - JQuery AJAX 同步请求行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13830275/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com