【问题标题】:Symfony action unable to retrieve proper AJAX JSON dataSymfony 操作无法检索正确的 AJAX JSON 数据
【发布时间】: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 时,结果是:

[]

以下是我已经尝试过的事情:

  • 运行 $.ajaxdata : '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


【解决方案1】:

arr 应该是一个对象而不是数组。数组只有数字索引,当你添加属性 "x" 时,它会变成一个 "array like" 对象

改变

arr = [];

arr = {};

【讨论】:

    猜你喜欢
    • 2011-04-26
    • 2017-07-22
    • 1970-01-01
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多