【问题标题】:How to pass data in the ajax DELETE request other than headers如何在除标头以外的ajax DELETE请求中传递数据
【发布时间】:2013-02-11 21:27:58
【问题描述】:

下面是我对DELETE 请求的 Ajax 请求:

deleteRequest: function (url, Id, bolDeleteReq, callback, errorCallback) {
    $.ajax({
        url: urlCall,
        type: 'DELETE',
        headers: {"Id": Id, "bolDeleteReq" : bolDeleteReq},
        success: callback || $.noop,
        error: errorCallback || $.noop
    });
}

除了headers之外,还有其他方法可以传递数据吗?

【问题讨论】:

    标签: jquery ajax


    【解决方案1】:

    阅读此错误问题:http://bugs.jquery.com/ticket/11586

    引用RFC 2616 Fielding

    DELETE 方法请求源服务器删除 Request-URI 标识的资源

    所以你需要在URI中传递数据

    $.ajax({
        url: urlCall + '?' + $.param({"Id": Id, "bolDeleteReq" : bolDeleteReq}),
        type: 'DELETE',
        success: callback || $.noop,
        error: errorCallback || $.noop
    });
    

    【讨论】:

    • 所以你可以在jquery 1.7.2之前用DELETE发送数据?
    • @user568109 我刚刚检查了各种版本的jQuery,似乎没有版本支持它..(我尝试降到1.3.2
    • @user568109 但老实说,我不确定 jquery 是否会切断它们或浏览器..
    【解决方案2】:

    我能够成功通过ajax方法中的data属性。这是我的代码

    $.ajax({
         url: "/api/Gigs/Cancel",
         type: "DELETE",
         data: {
                 "GigId": link.attr('data-gig-id')
               }
    
      })
    

    link.attr 方法只返回 'data-gig-id' 的值。

    【讨论】:

      【解决方案3】:
      deleteRequest: function (url, Id, bolDeleteReq, callback, errorCallback) {
          $.ajax({
              url: urlCall,
              type: 'DELETE',
              data: {"Id": Id, "bolDeleteReq" : bolDeleteReq},
              success: callback || $.noop,
              error: errorCallback || $.noop
          });
      }
      

      注意:headers 的使用是在 JQuery 1.5 中引入的。:

      与请求一起发送的附加标头键/值对的映射。此设置在调用 beforeSend 函数之前设置;因此,headers 设置中的任何值都可以在 beforeSend 函数中被覆盖。

      【讨论】:

      • 感谢您的回复,标准的做法是什么?标题还是数据?
      猜你喜欢
      • 2013-02-11
      • 1970-01-01
      • 2017-05-04
      • 1970-01-01
      • 2011-03-16
      • 2020-05-11
      • 2018-11-10
      • 2013-09-16
      • 1970-01-01
      相关资源
      最近更新 更多