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。そのため、on でエラーをキャッチしようとする代わりに、関数内で then を扱うことができます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);
     }
}); 

お役に立てば幸いです。

于 2012-11-15T20:56:58.260 に答える