2012-08-06 29 views
1

我注意到,當我使用Rails UJS形式AJAX提交,JavaScript的反應只會如果服務器返回時,服務器返回HTTP成功(2xx)上,什麼也不做評價狀態碼4xx或5xx。的Rails UJS:如何評價在HTTP錯誤的Javascript響應

我要修改此行爲,這樣的Javascript響應將被評估,即使服務器返回HTTP錯誤。我正在考慮與事件ajax:error結合自己的狀態,但我必須爲每一個AJAX形式,我有我的應用程序中做到這一點。任何人都有想法如何在全球範圍內做到這一點

一個問題:我可以檢查是否由服務器返回的內容類型通過JQuery是JavaScript?

謝謝!

回答

1

由於所有的Rails UJS處理程序需要有數據遠程=「真」定義,你可以綁定到AJAX:全球範圍內做

$('[data-remote="true"]').on('ajax:error', my_special_error_callback); 

然後,你需要確保你定義的回調錯誤事件檢查的錯誤代碼:

function my_special_error_callback(event, data, status, xhr) { 
    if(status == 'error') { 
    alert('error'); 
    responseText = JSON.parse(data.responseText)["errors"] // This is dependent on how you're returning your errors from Rails 
}