我目前正在开发一个基于symfony2的项目,它有很多ajax用法。
现在我想通过$.ajax();
(POST类型)发送JSON并在symfony2控制器中处理它。
但我不太确定如何在控制器中访问JSON。
现在我有以下内容:
JS:
$.ajax({
url: url,
type:"POST",
data:json,
success:function (data) {
$('div.tooltip p').html(data);
}
});
PHP:
public function registrationAction(Request $request) {
if($request->getMethod() == 'POST') {
// How to receive??
}
return $this->render('KnowHowERegistrationBackendBundle:Create:registration.html.twig');
}
我唯一不知道的是如何访问JSON? 我确信这很容易,我只是看不到它。 谢谢你的帮助!
答案 0 :(得分:15)
$.ajax({
url: url,
type:"POST",
contentType: 'application/json',
data:json,
success:function (data) {
$('div.tooltip p').html(data);
}
});
并在您的控制器中使用它来解析内容:
if($request->getMethod() == 'POST') {
if (0 === strpos($request->headers->get('Content-Type'), 'application/json')) {
$data = json_decode($request->getContent(), true);
$request->replace(is_array($data) ? $data : array());
}
}
有关更多信息,请查看Silex http://silex.sensiolabs.org/doc/cookbook/json_request_body.html
的这本食谱答案 1 :(得分:2)
您的代码我认为不完整,如果您想以json格式向服务器发送数据我认为设置$ .ajax就像这样,只是示例
$.ajax({
url: url,
type:"POST",
data:"JSONFile=" + json,
success:function (data) {
$('div.tooltip p').html(data);
}
});
添加参数JSONFile或您想要的任何内容。您可以使用json decode从客户端检索json。
这是php中的代码:
$json = $_POST['JSONFile'];
var_dump(json_decode($json));
var_dump(json_decode($json, true)); //true option if you will convert to array
在symfony2控制器中直接访问$_POST
是错误的,因此请使用请求
$request = $this->getRequest();
$request->request->get('JSONFile'); // get a $_POST parameter