1

如果我使用的 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);
         }
       }
   ); 

更新:除了布鲁诺的回答之外,除了“状态”属性之外,xhr 还具有xhr.statusText. 所以在我的情况下,如果他们指定一个空名称(这是无效的),我已将服务器设置为发送错误 400 和自定义消息,并显示后者。

4

1 回答 1

5

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

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

onerror因此,可以通过在函数上添加参数来实现您想要做的事情editable。该onerror参数需要以下格式的函数作为参数:

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

xhr参数是你的XHR Object. 因此,您可以简单地在onerror函数中处理 then ,而不是尝试在 on 上捕获错误。如下所示:

$('.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);
     }
}); 

我希望它有所帮助。

于 2012-11-15T20:56:58.260 回答