【问题标题】:Strange behavior in calling $.ajax with PUT verb使用 PUT 动词调用 $.ajax 时的奇怪行为
【发布时间】:2013-10-22 00:55:28
【问题描述】:

我这样调用 $.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 也可以在其他方法中使用!

【问题讨论】:

标签: javascript jquery ajax json


【解决方案1】:

尝试使用一些引号:

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

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

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

然后:

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

【讨论】:

  • 仍然出现错误。 data 和 dataMap 完全相同(与== 相比)。
  • @KiTO 用双引号试试,对不起
猜你喜欢
  • 2013-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多