Gestion du retour AJAX en prod
Bonjour,
J'ai déjà posé cette question sur un autre site, mais sans réponse, je me tourne donc vers vous
Je viens vers vous car j'ai un petit problème avec AJAX en production. J'ai développé mon appli sous Symfony2 et j'ai un hébergement OVH mutualisé Perso.
Le site en lui-même fonctionne sans problèmes, mais lorsque je lance ma requête AJAX, celle-ci retourne une erreur 404. (repérée avec Firebug).
La requête est relativement simple, j'ai des listes déroulantes qui me servent à filtrer mes données selon des critères. JS récupère les variables des listes, les transfère à mon controller via AJAX et FOSJSRouting, puis AJAX récupère la page et l'affiche.
Jusque là, pas de soucis ... en dev, mais en prod, une jolie erreur 404... De plus, si je vais dans l'environnement de dev sur le serveur, la requête fonctionne !! Il s'agit donc bien d'un souci en prod.
J'ai mis une alert() en retour en cas d'erreur, et celle-ci s'affiche en prod.
Pour info, après vérif avec Firebug, les paramètres de la requête sont bien récupérés, et envoyés à la bonne action du controller.
Je précise également que l'appli Symfony est un espace privé d'un site développé sous WordPress, auquel je n'ai pas accès.
Je vous mets le code correspondant à ma requête AJAX :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
function displayPlanning() {
var company = $("#form_filter_company").val();
var cp = $("#form_filter_cp").val();
var project = $("#form_filter_project").val();
var das = $("#form_filter_das").val();
var solution = $("#form_filter_solution").val();
$.ajax({
type: 'POST',
url: Routing.generate('asmolding_admin_filterByCriteria', {'companySeparator':'/','companyId':company, 'contactSeparator':'/', 'contactId': cp, 'projectSeparator': '/', 'projectId': project, 'dasSeparator': '/', 'das': das, 'solutionSeparator': '/', 'solution':solution}),
dataType: 'html',
//data: DATA,
cache: false,
success:function (html){
$('#results').html(html);
},
error: function(html){
//$('#results').html(html);
alert(html);
}
});
return false;
}; |
Et mon 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
public function filteredAction($companyId = '', $contactId = '', $projectId = '', $das = '', $solution = '') {
$em = $this->getDoctrine()->getManager();
$request = $this->getRequest();
$controllerFull = strstr($this->getRequest()->get('_controller'), ':', 1) ;
$pos = strrpos($controllerFull, '\\');
$controller = substr(substr($controllerFull, $pos), 1);
if($request->isXmlHttpRequest()){
if($companyId != ''){
$company = $em->getRepository('AsmoldingBundle:Company')->find($companyId);
if($this->get('security.context')->isGranted('ROLE_CHEFPROJET')){
$cp = $this->getUser();
$molds = $em->getRepository('AsmoldingBundle:Mold')->getNotArchivedByCPAndByClient($cp, $company);
}
else{
$molds = $em->getRepository('AsmoldingBundle:Mold')->getNotArchivedByClient($company);
}
} else if($contactId != ''){
if($this->get('security.context')->isGranted('ROLE_CHEFPROJET')){
$cp = $this->getUser();
} else{
$cp = $em->getRepository('AsmoldingBundle:Contact')->find($contactId);
}
$molds = $em->getRepository('AsmoldingBundle:Mold')->getNotArchivedMoldsByCP($cp);
} else if($projectId != ''){
$project = $em->getRepository('AsmoldingBundle:project')->find($projectId);
if($this->get('security.context')->isGranted('ROLE_CHEFPROJET')){
$cp = $this->getUser();
$molds = $em->getRepository('AsmoldingBundle:Mold')->getNotArchivedByCPAndByProject($cp, $project);
} else{
$molds = $em->getRepository('AsmoldingBundle:Mold')->getNotArchivedByProject($project);
}
} else if($das != ''){
if($this->get('security.context')->isGranted('ROLE_CHEFPROJET')){
$cp = $this->getUser();
$molds = $em->getRepository('AsmoldingBundle:Mold')->getNotArchivedByCPAndByDas($cp, $das);
} else{
$molds = $em->getRepository('AsmoldingBundle:Mold')->getNotArchivedByDas($das);
}
} else if($solution != ''){
if($this->get('security.context')->isGranted('ROLE_CHEFPROJET')){
$cp = $this->getUser();
$molds = $em->getRepository('AsmoldingBundle:Mold')->getNotArchivedByCPAndBySolution($cp, $solution);
} else{
$molds = $em->getRepository('AsmoldingBundle:Mold')->getNotArchivedBySolution($solution);
}
}
$milestones = $em->getRepository('AsmoldingBundle:Milestone')->getAll();
$generalPlans = $em->getRepository('AsmoldingBundle:GeneralPlan')->getAll();
if($companyId != ''){
$lastUpdate = $em->getRepository('AsmoldingBundle:GeneralPlan')->getRecentUpdateTimeByClient($company);
} else if($projectId != ''){
$lastUpdate = $em->getRepository('AsmoldingBundle:GeneralPlan')->getRecentUpdateTimeByProject($project);
}
else{
$lastUpdate = $em->getRepository('AsmoldingBundle:GeneralPlan')->getRecentUpdateTime();
}
if(!$molds){
throw new NotFoundHttpException('Aucun planning pour cette recherche');
}
$today = date('d-m-Y');
$numWeek = date("W", strtotime($today));
$year = date("Y", strtotime($today));
return $this->render('AsmoldingBundle:Admin:generalPlan.html.twig', array('molds' => $molds, 'generalPlans' => $generalPlans,'milestones' => $milestones,'numWeek' => $numWeek, 'year' => $year, 'lastUpdate' => $lastUpdate, 'controller' => $controller));
} else{
return null;
}
} |
Merci de votre aide, ça fait trois jours que je bute dessus, et aucune réponse sur les forums.
SG