Javascript jQuery ajax延迟无法正常运行
我正在执行一个ajax调用,响应为200 OK,但在donedferred方法上不起作用。我曾尝试在旧的jQuery中使用成功回调(从1.8开始,该回调已贬值),但这也不起作用。使用失败延迟方法很有效,总是延迟方法也很有效,但这似乎更像是一种使用技巧,而不是用正确的方法和使用done。我错过了什么 JavaScriptJavascript jQuery ajax延迟无法正常运行,javascript,jquery,ajax,jquery-deferred,Javascript,Jquery,Ajax,Jquery Deferred,我正在执行一个ajax调用,响应为200 OK,但在donedferred方法上不起作用。我曾尝试在旧的jQuery中使用成功回调(从1.8开始,该回调已贬值),但这也不起作用。使用失败延迟方法很有效,总是延迟方法也很有效,但这似乎更像是一种使用技巧,而不是用正确的方法和使用done。我错过了什么 JavaScript $.ajax({ url: core.api_url + '/quote/' + core.quote_id + '/items', type: 'put',
$.ajax({
url: core.api_url + '/quote/' + core.quote_id + '/items',
type: 'put',
dataType: 'array',
data: $.extend({}, items), // Needs to be converted to an object of objects because jQuery ajax cannot handle arrays of objects
beforeSend: function(){
$('.message-container .ui.message.saved').addClass('hidden');
$('.message-container .ui.message.saving').removeClass('hidden');
}
}).done(function(response){
$('.message-container .ui.message.saving').addClass('hidden');
if(response.success == true){
$('.message-container .ui.message.saved').removeClass('hidden');
}
if(response.success == false){
$('.message-container .ui.message.failed').removeClass('hidden');
}
});
控制台日志
HTTP/1.1 200 OK
Server: nginx/1.8.0
Content-Type: application/json
Transfer-Encoding: chunked
Connection: keep-alive
Cache-Control: no-cache
Response:
{"success":true,"results":[{"id":31}]}
正如adeneo所说:数据类型:“array”无效,jquery可能会触发.fail()而不是.done()
愚蠢的是,我没有意识到数据类型数组是不允许的。将其更改为json可以按预期工作 对于所有那些说要使用成功、完成或错误的人。从jQuery1.8开始,它们确实已经贬值了。有关jQuery文档的直接参考,请参见下文 弃用通知:jqXHR.success()、jqXHR.error()和 jqXHR.complete()回调从jQuery 1.8开始就不推荐使用。准备 要最终删除它们,请使用jqXHR.done()、jqXHR.fail(), 而jqXHR.always()则相反
Uhm,我不认为
dataType:'array',
是有效的,你必须输出JSON。有什么理由不想使用success:function(){…}
和error:function(){…}
如果查看浏览器控制台或使用调试器,您会发现回调正常调用,但会导致错误…仅供参考,失败
在出现错误时激发,始终
激发,始终良好,完成
仅在请求成功时激发。您的请求未成功。如果您将fail
处理程序的参数记录到控制台中,您将看到出错的地方控制台没有返回错误jon。另外,对于user1354678,从jQuery的1.8版开始,不建议使用成功和错误回调。adeneo是正确的,不允许使用数据类型数组。我已将其更改为JSON,并且工作正常。谢谢