0

次のような ajax ローダーを管理するための JavaScript クラスがあります。

App.Utils.Spinner = {

  showSpinner: function() {
    return $('#spinner-wrapper').show();
  },

  hideSpinner: function() {
    return $('#spinner-wrapper').hide();
  },

  bindEvents: function() {
    $(document).on('ajaxSend', function(e, xhr, settings) {
      var spinnerRegExp = /spinner\=false/;

      if (!settings.data.match(spinnerRegExp)) {
        return App.Utils.Spinner.showSpinner();
      }
    });

    $(document).on('ajaxComplete', function() {
      return App.Utils.Spinner.hideSpinner();
    });
  }

};

この行は毎回エラーを引き起こします (キャッチされない型エラー: オブジェクトにはメソッドの一致がありません):

settings.data.match(spinnerRegExp)

私は単に、データ リクエスト パラメータのいずれかでスピナーが false に設定されているかどうかを判断しようとしています。例:

utf8=%E2%9C%93&authenticity_token=F3xCyZ0GV1SMGMXZzGKUTomMCQxAbu9jqiBhB4YchuE%3D&bet%5Bhay_line_id%5D=27&hey%5Bpick%5D=1&spinner=false&het%5Bbails%5D=50&commit=Do+it!

これどうやってするの?プラグインを使用しないことをお勧めします。

4

2 に答える 2

0

このタスクでは、代わりにこのライブラリ (URI.js)のような URL 解析ライブラリを使用することをお勧めします。

自分で正規表現を使用して URL を解析することは、正規表現を使用して HTML を解析することと本質的に同じです。ある程度は動きますが、スケーラビリティはゼロで、デバッグもそうです。

ライブラリを使用すると、次のように簡単になります。

var parsed = URI.parse('http://example.com/something/requested?with=parameter&parameter=true');
var query = URI.parseQuery(parsed.query);

if (query.with && query.with == 'parameter')
{
    // do stuff!
}

あなたの問題では、それはまさに次のようになります:

var query = URI.parseQuery(settings.data);

if (query.spinner && (query.spinner == "true" || query.spinner = true))
{
    return App.Utils.Spinner.showSpinner();
}

フィドル

于 2013-07-01T12:27:00.520 に答える