gpt4 book ai didi

jquery - async :false option not working in $. ajax() ,它在 jQuery 1.8+ 中是否对所有用例都已贬值?

转载 作者:行者123 更新时间:2023-12-03 22:44:29 25 4
gpt4 key购买 nike

我对将 async: false 选项与 $.ajax() 一起使用感到困惑。根据 $.ajax() 文档:

As of jQuery 1.8, the use of async: false with jqXHR ($.Deferred) is deprecated; you must use the success/error/complete callback options instead of the corresponding methods of the jqXHR object such as jqXHR.done() or the deprecated jqXHR.success().

我不知道 jqXHR ($.Deferred) 是什么意思。使用 async:false 是否因任何原因而被贬值,或者 jqXHR ($.Deferred) 是某种特殊用例?

我问这个问题是因为我在异步调用 $.ajax() 时遇到问题。这是 jQuery 1.8.2 的情况:

var ret = {};

$.ajax({
async: false,
method: 'GET',
contentType: 'application/json',
dataType: 'jsonp',
url: '/couchDBserver',
error: myerr,
success: function(data) {

var rows = data.rows;

//something that takes a long time
for(var row in rows) {
ret[rows[row].key] = rows[row].value;
}

console.log('tick');
}
});
console.log('tock');
console.log(JSON.stringify(ret))

我的控制台输出是:

tock
{}
tick

我做错了什么,还是我做错了什么错误

最佳答案

它的意思是,如果您的请求是async: false,那么您不应该使用ajax.done()ajax.fail() 等方法来注册回调方法,而是需要使用 success/error/complete 选项将回调方法传递给 ajax 调用

正确

$.ajax({
async: false,
success: function(){
},
error: function(){
},
complete: function(){
}
})

错误

$.ajax({
async: false
}).done(function(){
}).fail(function(){
}).always(function(){
})

if async: true//未指定

正确

$.ajax({
}).done(function(){
}).fail(function(){
}).always(function(){
})

$.ajax({
async: false,
success: function(){
},
error: function(){
},
complete: function(){
}
})

关于jquery - async :false option not working in $. ajax() ,它在 jQuery 1.8+ 中是否对所有用例都已贬值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18267969/

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