2015-10-20 121 views
0

我有一個阿賈克斯調用我正在執行和響應200確定,但它不是在完成推遲方法。我已經嘗試在舊的jQuery(這是貶低爲1.8)的方式使用成功回調,但這也不起作用。使用失敗延遲方法工程找到,並且總是推遲方法,但這看起來更像是一個黑客使用比做正確的方式和使用完成。我錯過了什麼?jQuery阿賈克斯延遲做不能正常工作

的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}]} 
+1

嗯,我不認爲'數據類型: '陣','是有效的,你必須輸出JSON。 – adeneo

+0

是否有任何理由說明爲什麼你不想使用'success:function(){...}'和'error:function(){...}' –

+0

如果你看一下瀏覽器控制檯或者使用調試器會發現回調被正常調用,但會導致錯誤... – Jon

回答

0

愚蠢的我沒有意識到該數據類型數組是不允許的。將此更改爲json按預期工作。

對所有那些說使用成功,完成或錯誤的人。從jQuery 1.8開始,這確實折舊了。請參閱下面的jQuery文檔的直接參考。

Deprecation Notice: The jqXHR.success(), jqXHR.error(), and jqXHR.complete() callbacks are deprecated as of jQuery 1.8. To prepare your code for their eventual removal, use jqXHR.done(), jqXHR.fail(), and jqXHR.always() instead.

http://api.jquery.com/jQuery.ajax