3 pièce(s) jointe(s)
Récupérer des données envoyées en AJAX dans le controller
Bonjour la communauté,
Depuis ma homepage, je tente de faire une simple requête AJAX afin de passer en variables de session Php la latitude et la longitude éventuellement récupérées par la géolocalisation réalisée par le navigateur. Ces données se retrouvent bien dans le formulaire de ma homepage car, sur le retour de ma requête AJAX, lorsque je fais
Code:
1 2 3 4 5 6 7
|
success: function(response) {
console.log(response);
alert('latitude = ' + $('#latitude').val() + ' and longitude = ' + $('#longitude').val());
} |
j'ai bien le popup
Pièce jointe 488317
Par contre, la récupération de ces données par mon controller ne s'effectue pas correctement.
Voici ma réquête AJAX :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
$.post({
url: $('#ajaxRoute').val(),
data: {
latitude: $('#latitude').val(),
longitude: $('#longitude').val()
},
dataType: "json",
success: function(response) {
console.log(response);
alert('latitude = ' + $('#latitude').val() + ' and longitude = ' + $('#longitude').val());
}
}); |
Et ma fonction dans le controller :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
/**
* @Route("/user/geolocation/session", name="user.geolocation.session")
*/
public function ajaxAction(Request $request)
{
if($request->isXmlHttpRequest())
{
$latitude = $request->request->get('latitude');
$longitude = $request->request->get('longitude');
$this->container->get('session')->set('latitude', $latitude);
$this->container->get('session')->set('longitude', $longitude);
$response = new JsonResponse();
$response->setData(array('latitude'=> $request->request->get('latitude'), 'longitude'=> $request->request->get('longitude')));
return $response;
}
else
{
$response = new JsonResponse();
$response->setData(array('error'=> 'error'));
return $response;
}
} |
La réponse Json me donne ce résultat :
Pièce jointe 488321
Apparemment,
Code:
$request->request->get()
n'a pas l'air de fonctionner comme je l'entends.
Quelqu'un aurait une idée?
Merci d'avance pour votre aide.
EDIT : je remarque que les contrôles "latitude" et "longitude" sont vides au moment du premier appel AJAX. Si je fais un refresh de la page, je récupère alors correctement le tout.