1

我正在尝试将额外的参数附加到每个 ajax 调用的查询字符串

假设原始 url 是: /customer/search?sort=Id,我希望处理后的 url 看起来像

/customer/search?sort=Id&criteria=abc

这是代码

   $.ajaxPrefilter(function (options, originalOptions, jqXHR) {
        // Append the initial search criteria
        options.url += '&criteria=abc';
   });

问题是:一键点击后,url变成:/customer/search?sort=Id&criteria=abc

第二次点击后,网址变为:/customer/search?sort=Id&criteria=abc&criteria=abc

它不断增加

看起来 jQuery ajax 调用使用的是同一个options对象,所以我添加了一个自定义标志

  $.ajaxPrefilter(function (options, originalOptions, jqXHR) {
        // Append the initial search criteria
        if (!options.processed) {
            options.url += '&criteria=abc';
            options.processed = true;
        }
   });

问题是:options.processed总是undefined。看起来每个 ajax 调用都使用一个唯一的options对象。现在我很困惑:)

4

1 回答 1

2

你不能简单地做

$.ajaxPrefilter(function (options, originalOptions, jqXHR) {
     //check if the new parameter has already ben added
     if(options.url.indexOf('&criteria') === -1){
        options.url += '&criteria=abc';
     }
});
于 2012-04-20T15:00:30.677 回答