How can I receive a JSON in symfony2
Solution 1
your code i think not complete,if you want to send data to server with json format i think the setup $.ajax like this, just example
$.ajax({
url: url,
type:"POST",
data:"JSONFile=" + json,
success:function (data) {
$('div.tooltip p').html(data);
}
});
add parameter JSONFile or whatever what do you want.and you can use json decode to retrive json from client.
this is code in php:
$json = $_POST['JSONFile'];
var_dump(json_decode($json));
var_dump(json_decode($json, true)); //true option if you will convert to array
in symfony2 controller direct acces $_POST
is bad so use request
$request = $this->getRequest();
$request->request->get('JSONFile'); // get a $_POST parameter
Solution 2
in your ajax request u must set the content type to application/json:
$.ajax({
url: url,
type:"POST",
contentType: 'application/json',
data:json,
success:function (data) {
$('div.tooltip p').html(data);
}
});
and in your controller use this to parse the content:
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());
}
}
Comments
-
Johannes Klauß about 2 years
I'm currently working on a symfony2 based project with lots of ajax usage.
Now I want to send a JSON via
$.ajax();
(POST type) and handle it in a symfony2 controller. But I'm not quite sure how I access the JSON inside the controller.Right now I've got the following:
JS:
$.ajax({ url: url, type:"POST", data:json, success:function (data) { $('div.tooltip p').html(data); } });
And the PHP:
public function registrationAction(Request $request) { if($request->getMethod() == 'POST') { // How to receive?? } return $this->render('KnowHowERegistrationBackendBundle:Create:registration.html.twig'); }
The only thing I don't know is how can I access the JSON? I'm sure it's pretty easy I just don't see it. Thanks for your help!
-
chiborg over 12 yearsWhile this works and is uncomplicated, accessing
$_POST
directly is not a good way to do it with Symfony 2. The answer from jBinfo is much better. -
viyancs over 12 yearsyup my code just example in php, in Sysmfony 2 maybe to get parameters and prefer hight security that will be different case. to get parameter you can use
$request->request->get('JSONFile'); // get a $_POST parameter
-
Pratik about 7 yearsIt is
$request->request->replace(is_array($data) ? $data : array());
See api here for methods used on $request object.