我正在尝试将 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
时,它是应该来自结果的操作:
[]
以下是我已经尝试过的事情:
- 使用
data : 'sometext'
运行$.ajax
(响应为:{sometext: ""}
) - 将方法更改为POST
- 删除
数据类型:'json'
- 将数据设置为:
JSON.stringify(arr)
- 将数据设置为:
{data : arr}
- 将数据设置为:
{data : JSON.stringify(arr)}
- 将 arr 值直接设置到数组中(不使用
['x']
键) - 清除缓存
- 安装 Linux
- 点燃笔记本电脑
- 回到过去杀死希特勒
到目前为止,我已经没有办法让它正常工作了。 这里可能出现什么问题,我该如何让它工作?
最佳答案
arr
应该是一个对象而不是数组。数组只有数字索引,当您添加属性“x”
时,它会变成一个“类似数组”对象
改变
arr = [];
至
arr = {};
关于javascript - Symfony 操作无法检索正确的 AJAX JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47379292/