一尘不染

$ .ajax忽略DELETE请求的数据参数

ajax

我刚刚从jQuery 1.3.2更新到1.4.3,并且在发出AJAX
DELETE请求时看到了一些新行为。由于某种原因,在我的data参数中传递的数据没有发送到服务器。例如:

$.ajax({
    url: '/example',
    data: {id: 12},
    type: 'DELETE'
});

最终向发送了DELETE请求/example,没有其他数据。但是,这种类型的调用可以很好地传递参数:

$.ajax({
    url: '/example?id=12',
    type: 'DELETE'
});

有没有其他人看到过类似的行为?有没有理由不再起作用(即:是设计使然,还是错误)?关于如何使其运作的任何建议?

此外,如果有人想知道为什么我不只是想将参数作为URL字符串的一部分传递,那是因为我最终试图使用$.ajaxSetup回调,在那里提供一些常规参数(即authenticity_token用于防止在Rails中进行伪造)。在尝试jQuery
1.4.3之前,所有这些工作都很好。


阅读 380

收藏
2020-07-26

共1个答案

一尘不染

jQuery
仅将参数附加到查询字符串(GET用于DELETE请求)(而无正文用于request),因此这是jQuery
1.4.3中的故意行为。

但是,此后发生了更改(此处提交),以允许正文DELETE在1.4.4版本中进行请求。

2020-07-26