使用 PUT 动词调用 $.ajax 的奇怪行为

Strange behavior in calling $.ajax with PUT verb

本文关键字:ajax PUT 调用 使用      更新时间:2023-09-26

我这样称呼$.ajax:

$.ajax({
  type: 'PUT',
  url: model.url(),
  data: {task: {assigned_to: selected()}},
  contentType: 'application/json'
})

selected()返回一个数组

task%5Bassigned_to%5D%5B%5D=524eda6b421aa91f4e000003&task%5Bassigned_to%5D%5B%5D=524ee37c421aa91ca9000008发送带有此有效负载的请求,这是错误的!必须发送json,但它不是json,我的rails服务器无法处理(Rails MultiJSON)。

我在chrome和Firefox上进行了测试(都在最新的稳定版本上)。

任何帮助真的非常感谢。

编辑

如果我首先JSON.stringify数据,它可以正常工作,但这根本不是一个好的解决方案,而且$.ajax在其他方法中也有效!

尝试使用一些双引号:

data: {"task": {"assigned_to": selected()}}

或者在外部定义数据并像这样分配它:

var dataMap = {"task": {"assigned_to": selected()}};

然后:

$.ajax({
type: 'PUT',
url: model.url(),
data: dataMap,
contentType: 'application/json'
})