Javascript jQuery ajax延迟无法正常运行

Javascript 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调用,响应为200 OK,但在donedferred方法上不起作用。我曾尝试在旧的jQuery中使用成功回调(从1.8开始,该回调已贬值),但这也不起作用。使用失败延迟方法很有效,总是延迟方法也很有效,但这似乎更像是一种使用技巧,而不是用正确的方法和使用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}]}

正如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,并且工作正常。谢谢