可编辑 - 检测ajax错误

Wil*_*ell 1 ajax jquery jeditable

如果我正在使用的XHR请求返回HTTP 200以外的其他内容(例如,如果存在内部服务器错误或服务器完全超时),是否可以添加一些代码以添加到Jeditable以引发错误?

我尝试添加回调参数(如下所示),但它似乎只在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);
         }
       }
   ); 
Run Code Online (Sandbox Code Playgroud)

更新:除了Bruno的回答之外,除了'status'属性之外,xhr还有其他一些内容xhr.statusText.所以在我的情况下,如果他们指定一个空名称(无效),我将服务器设置为发送错误400加上自定义消息,并显示后者.

Bru*_*ira 5

根据Jeditable源代码,有一个名为的参数onerror

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

因此,通过onerroreditable函数中添加参数,可以实现您要执行的操作.该onerror参数需要以下列格式作为参数的函数:

function(settings, original, xhr) { ... }
Run Code Online (Sandbox Code Playgroud)

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);
     }
}); 
Run Code Online (Sandbox Code Playgroud)

我希望它有所帮助.