4

さまざまな AJAX 要求を持つ Backbone.js を使用するアプリケーションがあります。すべての AJAX リクエストをインターセプトし、定義の時点でこれらの関数を指定することなく、いくつかの事前および事後リクエスト機能を実行できるようにしたいと考えています。

私がやりたいことの例は、リクエストからの応答がユーザーがログインしていないことを示している場合、全画面モーダルが表示されることです。

私はjQueryを介して次のようなことをすることを見てきました:

jQuery.ajaxSetup({
  beforeSend: function() {
     return console.log("mybefore");
  }
});

しかし、これはソケットを使用した XHR リクエストを見逃しているようです。

また、次のようなことを簡単に見ました。

XMLHttpRequest.prototype.reallySend = XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send = function(body) {
    console.log('mybefore');
    this.reallySend(body);
};

この例では、どうすればよいかわかりませんでしたafter

結局のところ、私の質問は次のとおりです。リクエストの作成方法を変更せずに、前処理と後処理を行う ajax 関数をオーバーライドするエレガントな方法はありますか。

(backbone.js固有のソリューションもいいでしょう)

4

1 に答える 1

0

このようなことをする必要があります。

CoffeeScript コード

define [
    'jquery'
], ($) ->
   loadElement = $('someContent')

   $(document)
      .ajaxStart(-> $(loadElement).show())
      .ajaxStop(-> $(loadElement).hide())
于 2014-06-26T14:33:10.877 に答える