2012-11-15 36 views
1

是否有一些代码我可以添加到Jeditable来引发错误,如果我使用的XHR请求返回HTTP 200以外的东西(例如,如果有内部服务器错误或服务器完全超时) ?Jeditable - 检测AJAX错误

我尝试添加回调参数(下同),但似乎只火当AJAX请求成功...

$('.foo').editable('/user/ajax_edit_full_name', 
     { 
     indicator: 'Saving...', 
     cancel : 'Cancel', 
     submit : 'Save', 
     cssclass : 'editable', 
     callback : function(value, settings) { 
      console.log(this); 
      console.log(value); 
      console.log(settings); 
     } 
     } 
    ); 

更新:继布鲁诺的答案,除了“状态”财产,xhr有,其中包括,xhr.statusText。所以在我的情况下,如果他们指定一个空的名称(这是无效的),我已经设置服务器发送错误400加上自定义消息,并显示后者。

回答

5

因此到Jeditable source code有一个名为onerror

@param Function options[onerror] function(settings, original, xhr) { ... } called on error 

这样的参数,有可能实现你正试图通过添加参数onerroreditable函数来完成。该onerror参数期望作为参数按以下格式的函数:

function(settings, original, xhr) { ... } 

xhr参数是你XHR Object。因此,您可以简单地处理您的onerror函数,而不是试图捕捉错误。如下:

$('.foo').editable('/user/ajax_edit_full_name', 
{ 
    indicator: 'Saving...', 
    cancel : 'Cancel', 
    submit : 'Save', 
    cssclass : 'editable', 
    onerror : function(settings,original,xhr){ 
     alert("It wasn't possible to edit. Try again"); 
     console.log("XHR Status: " + xhr.status); 
    }, 
    callback : function(value, settings) { 
     console.log(this); 
     console.log(value); 
     console.log(settings); 
    } 
}); 

我希望它有帮助。

+0

完美(感谢编辑添加示例代码) –

+0

我很高兴我可以提供帮助。 –