我正在执行一个ajax调用,响应是200 OK但是它不能用于完成延迟方法。我尝试在旧的jQuery中使用成功回调(这是从1.8开始折旧)的方式,但这也不起作用。使用失败延迟方法可以找到始终延迟方法,但这看起来更像是使用hack而不是正确使用并使用done。我错过了什么?
的JavaScript
$.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}]}
答案 0 :(得分:0)
像adeneo所说:dataType:' array'无效,可能jquery将触发.fail()而不是.done()。
答案 1 :(得分:0)
愚蠢的是我没有意识到不允许使用dataType数组。将此更改为json按预期工作。
对所有使用成功,完成或错误的人说。从jQuery 1.8开始,它们确实被折旧了。请参阅以下内容,以获取jQuery文档的直接参考。
弃用通知:jqXHR.success(),jqXHR.error()和 从jQuery 1.8开始,不推荐使用jqXHR.complete()回调函数。准备 你的代码最终删除,使用jqXHR.done(),jqXHR.fail(), 和jqXHR.always()相反。