【问题标题】:jQuery - can I "append" an additional parameter to every get/post request madejQuery - 我可以为每个获取/发布请求“附加”一个附加参数吗
【发布时间】:2011-04-08 15:58:16
【问题描述】:

我想扩展 jQuery,这样在客户端发出的每个 post/get 请求都会发送一个额外的参数(总是相同的键:值)。如果请求是通过 jQuery 发出的,我需要它在客户端检测,因为我有几个 js 库在工作。附加参数只是jquery : true。典型的请求通常如下所示:

jQuery.post('/users/save', { name : 'john', age : 24 }, ....)

有没有办法通过扩展 jQuery 或其他方式来附加这个附加参数,以便它在到达服务器时看起来像这样:

{ name : 'john', age : 24, jquery : true }

基本上我想在请求到达服务器端之前拦截请求并编辑它的参数。谢谢。

【问题讨论】:

    标签: javascript jquery metaprogramming


    【解决方案1】:

    beforeSend(XMLHttpRequest)

    修改前回调 XMLHttpRequest 对象之前是 发送。使用它来设置自定义标题 等 XMLHttpRequest 被传递为 唯一的论据。这是一个阿贾克斯 事件。您可能会在 取消请求的函数

    你应该可以将它与ajaxSetup一起使用

    【讨论】:

      【解决方案2】:

      在执行任何 AJAX 请求之前,尝试在代码中的某处放置以下内容:

      $.ajaxSetup({
          beforeSend: function(xhr) {
              var newUrl = this.url;
              if (newUrl.indexOf("?") != -1) {
                  newUrl = newUrl + '&jquery=true';
              } else {
                  newUrl = newUrl + '?jquery=true';                
              }
              xhr.open(this.type, newUrl, this.async);
          }
      });
      

      这将在发送任何 AJAX 请求之前触发一个函数。该函数确定新 URL 应该是什么(基于是否已附加任何查询字符串),然后重新打开 XMLHttpRequest,并在末尾附加“jquery=true”。

      这是一个工作演示:http://jsfiddle.net/uz9zg/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-11
        • 2020-09-10
        • 1970-01-01
        • 1970-01-01
        • 2019-01-04
        相关资源
        最近更新 更多