Javascript jQuery正则表达式数据请求错误

Javascript jQuery正则表达式数据请求错误,javascript,jquery,ajax,regex,Javascript,Jquery,Ajax,Regex,我有一个JavaScript类用于管理ajax加载程序,如下所示: App.Utils.Spinner = { showSpinner: function() { return $('#spinner-wrapper').show(); }, hideSpinner: function() { return $('#spinner-wrapper').hide(); }, bindEvents: function() { $(document).

我有一个JavaScript类用于管理ajax加载程序,如下所示:

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

};
此行每次都会导致错误(未捕获类型错误:对象没有方法匹配):

我只是想确定是否有任何数据请求参数的微调器设置为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!

我该怎么做?不喜欢使用插件。

我建议,对于这个任务,您可以使用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();
}

!

下面是我的代码,无需外部库:

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/;
      var dataStringified = JSON.stringify(settings.data || settings.url);

      if ( dataStringified && !dataStringified.match(spinnerRegExp) ) {
        return App.Utils.Spinner.showSpinner();
      }
    });

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

};

这是因为如果数据未设置,并且值作为url的一部分传递,那么
数据
元素将为空。那么您的解决方案是什么,以便我可以检查微调器参数是否设置为false?此外,
数据
可能是对象而不是字符串。看起来是基于输出的字符串是什么您得到的错误?
settings.data
是为
post
请求设置的
settings.url
get
请求设置:
var query=URI.parseQuery(settings.data | | settings.url)
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/;
      var dataStringified = JSON.stringify(settings.data || settings.url);

      if ( dataStringified && !dataStringified.match(spinnerRegExp) ) {
        return App.Utils.Spinner.showSpinner();
      }
    });

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

};