2014-01-21 128 views
0

聽我使用jQuery來檢索JSON包來更新我的顯示器。我正在嘗試使用全局ajax處理程序來放入全局「AJAX失敗」處理程序。但不幸的是,當我停止我的後端(ASP.NET)請求犯規「失敗」正因爲如此,它發回jQuery的AJAX請求:沒有終點的

{"Success":false,"Message":"There was no endpoint listening at 
http://localhost:8733/ that could accept the message. This is often 
caused by an incorrect address or SOAP action. See InnerException, if 
present, for more details."} 

因爲這並不觸發jQuery的AJAX誤差函數我的全球處理器犯規把它撿起來。發生了什麼以及如何強制這導致適當的錯誤?

這裏是我的全局錯誤處理程序

$(document).ajaxError(function (event, jqxhr, settings, exception) { 
    // Increase our error array 
    if (++ajaxURLArray[settings.url] >= ajaxMaxFailsBeforeMessage) { 
     console.log("Show AJAX error message"); 
    } 
}); 

回答

3

因爲這並不觸發jQuery的AJAX誤差函數我的全球 處理器犯規把它撿起來存根。發生了什麼以及如何強制這個 導致適當的錯誤?

僅當服務器發送非成功狀態碼(範圍在200-299之外)時纔會觸發錯誤功能。當你給它一個想法它實際上是有道理的。這正是HTTP協議中狀態碼的目的 - >來指示操作的狀態。

所以,如果你希望你的錯誤處理程序來觸發,去修改你的服務器端腳本,以便它尊重HTTP協議的更好一點,並返回例如400 Bad Request狀態碼,此錯誤JSON響應一起。我一直想知道有多少網站在那裏正在返回錯誤作爲JSON和狀態代碼設置爲200

所以你可以看到,如果你尊重HTTP協議也將減少你的webssite的帶寬消耗 - >您已經顯示了JSON的"Success"布爾屬性成爲一種無用的。這是HTTP狀態碼的作用。

+0

這是很聰明的! –

+0

感謝您的回答,我被抓了內部異常,然後返回一個JSON消息。我想我不會覺得它會停止調試器,它讓我一開始就感到困惑。謝謝。這背後的最初原因是想我可以得到更多的錯誤信息回來,如果它失敗了,我怎樣才能從失敗的AJAX請求異常信息(現在發送500)? – Chris