【发布时间】:2017-11-19 16:43:08
【问题描述】:
我正在尝试将 JSON 对象发送到 Symfony 操作中。
用于构建和发送数组的脚本如下所示:
var rows, arr = [];
rows = table.find('table tbody tr');
arr['x'] = new Array(rows.length);
table.find('table tbody tr').each(function (i) {
arr['x'][$(this).find('.username').text() - 1] = i;
});
console.log(arr); //PRINTS THE PROPER JSON OBJECT
$.ajax('some/correct/path', {
type: 'PUT',
data: arr,
datatype: 'json',
success: function (e) {
console.log(e);
}
});
这里我有一个动作,现在应该什么都不做,只是捕获请求数据并将其发回:
/**
* @View\Route("/x", name="x", options={"expose"=true})
* @View\Method("PUT")
*/
public function xAction(Request $request)
{
$all = $request->request->all();
return $this->json($all);
}
这里的问题是,当我在 arr 变量上使用 console.log 时,它会产生正确的打印,但是当我控制台记录应该来自操作的 e 时,结果是:
[]
以下是我已经尝试过的事情:
- 运行
$.ajax和data : 'sometext'(响应为:{sometext: ""}) - 将方法更改为 POST
- 删除
datatype: 'json' - 将数据设置为:
JSON.stringify(arr) - 将数据设置为:
{data : arr} - 将数据设置为:
{data : JSON.stringify(arr)} - 将 arr 值直接设置到数组中(不使用
['x']键) - 清除缓存
- 安装 Linux
- 让笔记本电脑着火
- 回到过去杀死希特勒
到目前为止,我想不出让它正常工作的想法。 这可能是什么问题,我怎样才能让它发挥作用?
【问题讨论】:
-
您是否尝试过:
data: JSON.stringify(arr), contentType: "application/json"? -
数组有数字索引。您正在创建一个像 arr 一样的对象的数组。改为创建对象
-
@DannyFardyJhonstonBermúdez 效果相同
-
@charlietfl 这行得通!您能否将其发布为答案,以便我标记它?
标签: javascript php json ajax symfony