Начиная с одной недели, я пытаюсь разместить 2 массива из Js на моем php контроллере, используя Ajax, но когда я пытаюсь получить его в моем контроллере, он становится пустым, поэтому я не знаю, что делать.
Это моя javascript функция. Он основан на форме, когда пользователь вводит адреса отправителя и прибытия. При этом я использую API для геокодирования и помещаю его в два массива ordonneeDepart и ordonneeArrive, но когда я публикую его, он не работает, моя переменная равна нулю в моем php, я не вижу, почему, когда я консоль. войдите в мой js все в порядке, координаты в моем массиве!
Если кто-то может мне помочь, это было бы очень любезно! Я надеюсь, что все ясно!
$(document).ready(function() {
var coordoneesDepart=new Array(2);
var coordoneesArrive=new Array(2);
var connexion = $('.routeConnexion').data('routeController');
if(navigator.geolocation){
navigator.geolocation.getCurrentPosition(function(position){
coordoneesDepart[0]= position.coords.latitude;
coordoneesDepart[1] = position.coords.longitude;
$.ajax({
url:"https://api-adresse.data.gouv.fr/reverse/?lon="+coordoneesDepart[1]+"&lat="+coordoneesDepart[0],
success: function (data){
document.getElementById("form_cp1").value= data.features[0].properties.postcode;
document.getElementById("form_adresse1").value=data.features[0].properties.name;
}
})
});
}
$("#form_cp1").autocomplete({
source: function (request, response) {
$.ajax({
url: "https://api-adresse.data.gouv.fr/search/?postcode="+$("input[name='form[cp1]']").val(),
data: { q: request.term },
dataType: "json",
success: function (data) {
var postcodes = [];
response($.map(data.features, function (item) {
// Ici on est obligé d'ajouter les CP dans un array pour ne pas avoir plusieurs fois le même
if ($.inArray(item.properties.postcode, postcodes) == -1) {
postcodes.push(item.properties.postcode);
return { label: item.properties.postcode + " - " + item.properties.city,
city: item.properties.city,
value: item.properties.postcode
};
}
}));
}
});
}
});
$("#form_adresse1").autocomplete({
source: function (request, response) {
$.ajax({
url: "https://api-adresse.data.gouv.fr/search/?postcode="+$("input[name='form[cp1]']").val(),
data: { q: request.term },
dataType: "json",
success: function (data) {
coordoneesDepart[0] =data.features[0].geometry.coordinates[1];
coordoneesDepart[1] =data.features[0].geometry.coordinates[0];
console.log(coordoneesDepart);
response($.map(data.features, function (item) {
return { label: item.properties.name, value: item.properties.name};
}));
}
});
}
});
$("#form_cp2").autocomplete({
source: function (request, response) {
$.ajax({
url: "https://api-adresse.data.gouv.fr/search/?postcode="+$("input[name='form[cp2]']").val(),
data: { q: request.term },
dataType: "json",
success: function (data) {
var postcodes = [];
response($.map(data.features, function (item) {
// Ici on est obligé d'ajouter les CP dans un array pour ne pas avoir plusieurs fois le même
if ($.inArray(item.properties.postcode, postcodes) == -1) {
postcodes.push(item.properties.postcode);
return { label: item.properties.postcode + " - " + item.properties.city,
city: item.properties.city,
value: item.properties.postcode
};
}
}));
}
});
}
});
$("#form_adresse2").autocomplete({
source: function (request, response) {
$.ajax({
url: "https://api-adresse.data.gouv.fr/search/?postcode="+$("input[name='form[cp2]']").val(),
data: { q: request.term },
dataType: "json",
success: function (data) {
coordoneesArrive[0] =data.features[0].geometry.coordinates[1];
coordoneesArrive[1] =data.features[0].geometry.coordinates[0];
console.log(coordoneesArrive);
response($.map(data.features, function (item) {
return { label: item.properties.name, value: item.properties.name};
}));
}
});
}
});
$.ajax({
method:"POST",
url:connexion,
contentType: "application/json",
data: JSON.stringify({
depart: coordoneesDepart,
arrive: coordoneesArrive,
}),
})
});
вот мой контроллер
/**
* @Route("/connexion", name="app_login")
*/
public function login(Request $request, AuthenticationUtils $authenticationUtils, SessionInterface $session, EntityManagerInterface $entityManager): Response
{
$user=$this->getUser();
$form = $this->createForm(LoginType::class);
$trajet = $session->get('trajet');
$depart = $request->request->get('depart');
dump($depart);
// if ($this->getUser()) {
// return $this->redirectToRoute('target_path');
// }
// get the login error if there is one
$error = $authenticationUtils->getLastAuthenticationError();
// last username entered by the user
$lastUsername = $authenticationUtils->getLastUsername();
if($user!==NULL){
$id=$user->getId();
$trajet->setUserId($id);
$entityManager->persist($trajet);
$entityManager->flush();
}
dump($trajet);
return $this->render('security/login.html.twig', [
'last_username' => $lastUsername,
'error' => $error,
'form' => $form->createView(),
]);
}