大家晚上好!
我想将JSON Post Data发送到Symfony控制器没有表单,但它不起作用。我构建了一个JSON数据线,并且它构建良好,它是 NOT 问题。当我使用AJAX发送数据时,请求未填写。
这是我的Javascript代码:
function validerSession()
{
//I don't describe the composition of the dataline.
var dataObject = JSON.stringify(obj); //My dataline JSONified
$.ajax({
type: "POST",
url: Routing.generate('cloud_money_drop_validerSession', { id: {{ partie.id }}, idSession: sessionId }),
data: dataObject,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (donnees) {
alert("Hello");
}
});
}
AJAX通话工作。
以下是接收数据的PHP Symfony Controller方法:
public function validerSessionAction(Partie $partie, Session $session)
{
$request = $this->get('request');
$data = json_decode($request->getContent());
$serializer = $this->container->get('jms_serializer');
$response = $serializer->serialize($data, 'json');
return new Response($response);
}
但 $data
中没有任何数据。
编辑:数据库JSONified的一个示例
{"trappes":{"1":{"id":"134","montant":"5000"},"2":{"id":"135","montant":"15000"},"3":{"id":"136","montant":"20000"},"4":{"id":"137","montant":"0"}}}
CloudCompany
答案 0 :(得分:2)
我找到了解决方案。 这并不困难。
没有必要对数据进行JSonify。控制器能够理解原始数据类型。
所以这是我简化的AJAX调用:
function validerSession()
{
obj = new Object();
obj["title"] = "Title for example";
$.ajax({
type: "POST",
url: Routing.generate('cloud_money_drop_validerSession', { id: {{ partie.id }}, idSession: sessionId }),
data: obj,
success: function (donnees) {
data = Parse.JSON(donnees);
alert(data.title); //Show "Title for example"
}
});
}
这是我的控制器。它可以将数据恢复为值数组。
public function validerSessionAction(Partie $partie, Session $session)
{
$request = $this->get('request');
$data = $request->request->all();
$serializer = $this->container->get('jms_serializer');
$response = $serializer->serialize($data["title"], 'json');
return new Response($response);
}
感谢您的帮助!