我刚刚从jQuery 1.3.2更新到1.4.3,并且在发出AJAX DELETE请求时看到了一些新行为。由于某种原因,在我的data参数中传递的数据没有发送到服务器。例如:
data
$.ajax({ url: '/example', data: {id: 12}, type: 'DELETE' });
最终向发送了DELETE请求/example,没有其他数据。但是,这种类型的调用可以很好地传递参数:
/example
$.ajax({ url: '/example?id=12', type: 'DELETE' });
有没有其他人看到过类似的行为?有没有理由不再起作用(即:是设计使然,还是错误)?关于如何使其运作的任何建议?
此外,如果有人想知道为什么我不只是想将参数作为URL字符串的一部分传递,那是因为我最终试图使用$.ajaxSetup回调,在那里提供一些常规参数(即authenticity_token用于防止在Rails中进行伪造)。在尝试jQuery 1.4.3之前,所有这些工作都很好。
$.ajaxSetup
authenticity_token
jQuery 仅将参数附加到查询字符串(GET仅用于DELETE请求)(而无正文用于request),因此这是jQuery 1.4.3中的故意行为。
GET
DELETE
但是,此后发生了更改(此处提交),以允许正文DELETE在1.4.4版本中进行请求。