使用Ajax(无表单)将POST数据以JSON格式发送到Symfony2 Controller
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Ajax(无表单)将POST数据以JSON格式发送到Symfony2 Controller相关的知识,希望对你有一定的参考价值。
晚上好大家!
我想将JSON Post Data发送到没有表单的Symfony控制器,但它不起作用。我构建了一个JSON数据线,它构建得很好,不是问题所在。当我使用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
我找到了解决方案。这并不难。
没有必要对数据进行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);
}
谢谢您的帮助!
以上是关于使用Ajax(无表单)将POST数据以JSON格式发送到Symfony2 Controller的主要内容,如果未能解决你的问题,请参考以下文章
ajax 上传文件,post上传文件,ajax 提交 JSON 格式的数据
将 HTML 表单数据放入 JSON 对象并进行 AJAX POST 调用
我可以使用 AJAX 'POST' 将数据发布到我服务器上的 JSON 文件吗?