【问题标题】:PHP Symfony 3 - POST variables unavailable in controllerPHP Symfony 3 - 控制器中的 POST 变量不可用
【发布时间】:2017-06-10 16:57:31
【问题描述】:

我正在尝试使用使用 JS 函数 JSON.stringify(objects) 构建的 JSON 字符串。在我工作的本地版本上,它正在工作,但在服务器上它会引发以下错误:

为 foreach 提供的参数无效

经过一番调查,$POST 表是空的。但在浏览器控制台中,数据是随查询一起发送的。

这里是请求的内容:

rencontres:[{"id":"1","m":"","f":"0-2","e":"","p":"","status":"3","st":false,"si":false,"se":false,"sp":false,"ss":false}]

这是$GET['rencontres']中包含的JSON字符串(由$request->get("rencontres")访问):

[{"id":"1","m":"","f":"0-2","e":"","p":"","status":"3","st":false,"si":false,"se":false,"sp":false,"ss":false}]

这似乎是正确的。

这里有一些 var_dump 结果: var_dump($renontres) 给出 [][]

var_dump($request->get("rencontres") gives also [][]

这是方法本身:

public function postSaveRencontre(Request $request){
    $em = $this->getDoctrine()->getManager();
    $rencontres = json_decode($request->get("rencontres"), true);
    //log struff
    foreach ($rencontres as $key => $r) {
        //blablabla
    }
    //return statement
}

这里是 AJAX 语句(url 是正确的):

$.ajax({
    type: "POST",
    url:"url",
    data: {rencontres:JSON.stringify(rencontres)},
    success:function(data){
        console.log("save performed");
    }
});

【问题讨论】:

  • var_dump($rencontres) 有没有给你线索?
  • 它给出“[ ][ ]”
  • foreach() 语句之前转储变量 $rencontres。也尝试删除stripcslashes()
  • run var_dump($request->get("rencontres")) 这给了你什么?
  • var_dump($rencontres) 给你[ ][ ] 吗?这很奇怪。

标签: php json symfony decode


【解决方案1】:

嗨,我认为我在我的应用程序中遇到了同样的问题
此问题的原因是 ajax 在发布时将数据作为内容类型应用程序/json 发送
要解决此问题,您必须将此代码添加到您的操作中

$data = json_decode($request->getContent(), true);
$request->request->replace($data);
dump($request->request->get("rencontres"))

您必须将此 ligne 添加到所有具有 POST 的操作中
或者想创建一个服务来转换你的 Json 请求

【讨论】:

  • 它说传递给 Symfony\Component\HttpFoundation\ParameterBag::replace() 的参数 1 必须是数组类型,给定 null。 $request->getContent() 似乎为空......这是有线的
  • 如果您检查网络,您是否看到请求有效负载中的数据
  • 通常如果你转储 $request->getContent();您必须以 json 格式查看数据
猜你喜欢
  • 2015-08-28
  • 2019-01-15
  • 2012-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-26
  • 1970-01-01
相关资源
最近更新 更多