【问题标题】:Jeditable - detect ajax errorJeditable - 检测 ajax 错误
【发布时间】:2012-11-15 20:47:41
【问题描述】:

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

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

【问题讨论】:

    标签: jquery ajax jeditable


    【解决方案1】:

    根据Jeditable source code有一个参数叫onerror

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

    因此,可以通过在 editable 函数上添加参数 onerror 来实现您想要做的事情。 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-02-15
      • 2013-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-22
      • 2017-02-03
      • 1970-01-01
      相关资源
      最近更新 更多