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

时间:2013-10-22 00:55:29

标签: javascript jquery ajax json

我这样叫$ .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也适用于其他方法!

1 个答案:

答案 0 :(得分:0)

尝试使用 double 引号:

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

或者在外面定义您的数据并将其分配如下:

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

然后:

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