我刚刚从 jQuery 1.3.2 更新到 1.4.3,并且在发出 AJAX DELETE 请求时看到了一些新行为。由于某种原因,在我的 data
参数中传递的数据没有发送到服务器。例如:
$.ajax({
url: '/example',
data: {id: 12},
type: 'DELETE'
});
最终向 /example
发送 DELETE 请求,没有任何其他数据。但是,这种类型的调用可以很好地传递参数:
$.ajax({
url: '/example?id=12',
type: 'DELETE'
});
还有其他人见过类似的行为吗?这是否有原因不再起作用(即:是设计使然,还是错误)?关于如何让它工作有什么建议吗?
此外,如果有人想知道为什么我不想简单地将参数作为 URL 字符串的一部分传递,那是因为我最终尝试使用 $.ajaxSetup
回调,在那里提供一些通用参数(即用于防止 Rails 中伪造的 authenticity_token
参数)。在尝试 jQuery 1.4.3 之前,这一切都运行良好。
最佳答案
jQuery will only append parameters to the querystring for GET
requests only (和 no body for DELETE
requests ),所以这是 jQuery 1.4.3 中的故意行为。
但是,从那时起 ( commit here ) 发生了变化,允许在 1.4.4 版本中使用 DELETE
请求的正文。
关于ruby-on-rails - $.ajax 忽略 DELETE 请求的数据参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4018982/