2013-02-21 150 views
2

我正在編寫一個基於Web的應用程序,它可以調用服務器來從REST-ful應用程序更新服務器中的特定對象。jQuery ajax()調用失敗

這是我寫的JavaScript代碼。

var sendUrl = url + "v1/items/" + itmId; 
$.ajax({ 
    "type": "PUT", 
    "url": sendUrl, 
    //"data": {"name": nameVal, "description": descVal}, 
    "success": function() { 
     alert('hai'); //refreshItems(); 
    }, 
    "complete": function (jqXHR, textStatus) { 
     alert (textStatus); 
    } 
}); 

當執行此代碼時,服務器沒有收到任何請求。瀏覽器沒有顯示任何更新。

我將Google Chrome用作我的瀏覽器。所以,我看着Chrome的JavaScript控制檯,控制檯顯示此錯誤:

Error from Chrome's Console

是否有解決這個問題的任何可能的解決方案?


編輯:

正如評論一個建議,我試圖尋找到網絡面板。它似乎沒有打電話給服務器。

這是此特定請求的屏幕截圖: enter image description here

的圖像是非常小的。狀態爲「(失敗)」且類型爲待執行

如果服務器未配置PUT,則會導致內部服務器錯誤。所以,這不是在這裏發生的。


編輯

試圖在回答中給出的建議後,

這是代碼:

var sendUrl = url + "v1/items/" + itmId; 
$.ajax({ 
    "type": "PUT", 
    "url": sendUrl, 
    //"data": {"name": nameVal, "description": descVal}, 
    }).done(function () { 
     alert('OK'); 
    }).fail(function (jqXHR, textStatus, errorThrown) { 
     console.log(jqXHR); 
     console.log(textStatus); 
     console.log(errorThrown); 
    }); 

下面是已記錄的對象:

enter image description here

+0

你設置你的服務器來處理'PUT'要求 – Musa 2013-02-21 00:25:12

+2

那是一個錯字錯誤註釋掉你的'數據'? – 2013-02-21 00:28:37

+1

很難從外面猜測。第一步是調查Chrome網絡面板中的特定呼叫。您可以在面板中篩選XHR請求。檢查服務器是否發送了任何響應。檢查請求是否包含拼寫錯誤或缺少必填字段。另外請記住,執行AJAX調用時端口必須匹配。 – 2013-02-21 00:33:52

回答

6

Docs for jquery Ajax function W3 specs regarding http/1.1 status codes


首先,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.

而且,失敗函數接受下列參數:

jqXHR, textStatus, errorThrown 

既然你」重新獲得出現錯誤請嘗試以下代碼:

var sendUrl = url + "v1/items/" + itmId; 
$.ajax({ 
    "type": "PUT", 
    "url": sendUrl, 
    //"data": {"name": nameVal, "description": descVal}, 

}).done(function () { 
    alert('OK'); 

}).fail(function (jqXHR, textStatus, errorThrown) { 
    console.log(jqXHR); 
    console.log(textStatus); 
    console.log(errorThrown); 
}); 

這應該向控制檯輸出有關爲什麼ajax調用不工作的有用信息。

如果你的web服務工作正常,它應該返回一個http狀態碼。下面是一些常見的響應代碼:

200 OK -> Everything is ok (it worked) 
201 Created -> Ok too 

400 Bad Request 
401 Unauthorized 
404 Not found 

所以,基本上,你得到的迴應應該反思,爲什麼它不工作