JS dans AJAX non-fonctionnel ?

Fermé
coeus Messages postés 3021 Date d'inscription samedi 13 janvier 2007 Statut Membre Dernière intervention 19 juin 2013 - 16 sept. 2011 à 14:38
rodoplop Messages postés 77 Date d'inscription vendredi 16 septembre 2011 Statut Membre Dernière intervention 6 juillet 2012 - 18 sept. 2011 à 22:33
Bonjour,

Ma question a moins trait à un bout de code particulier qu'à une situation générale...

J'ai une page PHP, laquelle contient un formulaire. Ce formulaire est divisé en deux parties. La première comporte une liste déroulante ; quand l'utilisateur choisit sa première option dans cette liste, la deuxième partie du formulaire se charge avec du AJAX ; j'ai choisi cette méthode car cette deuxième partie demande des recherches dans une BDD, donc je ne peux pas le faire en JS pur.

Dans cette moitié de formulaire appelée par AJAX, il y a des widgets qui utilisent aussi du JS ; par exemple un slider qui change dynamiquement la valeur d'une boîte de texte, laquelle sera éventuellement utilisée lors du submit. Le problème est, je ne peux mettre aucun code Javascript dans la page PHP appelée par AJAX. Il ne fonctionne tout simplement pas. Pour m'en assurer, j'ai essayé de mettre un simple alert();, rien d'autre, à la fin du fichier ; et je vois clairement que le code HTML est appelé correctement, les recherches dans la BDD sont concluantes, mais le Javascript ne se lance pas.

Pour le moment, ma solution est de mettre mon code Javascript dans un fichier externe, lequel est intégré dans la page "index" (celle qui contient le formulaire en entier), mais je trouve que c'est très peu optimisé, et j'ai de nombreux problèmes de synchronisation ; j'en suis réduit à utiliser quelques setTimeout() pour être sûr que certaines fonctions en JS sont appelées après que le fichier AJAX soit chargé (par exemple, pour initialiser la valeur de base du slider sus-mentionné).

Voilà, j'espère avoir été clair dans mon explication... Voyez-vous un moyen de régler ou de contourner le problème ? À date j'ai réussi à faire un code qui finit par marcher, mais il est, à mon sens, très malpropre, et il a quelques "glitches" qui font très peu professionnel.

Noter que j'utilise JQuery pour mes widgets, si ça peut aider.

Merci beaucoup à tous ! Passez une bonne journée !!!


2 réponses

coeus Messages postés 3021 Date d'inscription samedi 13 janvier 2007 Statut Membre Dernière intervention 19 juin 2013 119
18 sept. 2011 à 20:56
up
0
rodoplop Messages postés 77 Date d'inscription vendredi 16 septembre 2011 Statut Membre Dernière intervention 6 juillet 2012 12
18 sept. 2011 à 22:33
Bonsoir,

votre javascript ne s'exécute pas simplement parce que votre page appelé en Ajax s'exécute coté serveur. Or le Javascript ne s'exécutera que coté client.

pour votre traitement, il faudra donc que votre première page appelle en Ajax votre page phh et attendre que votre requête soit terminée avant de continuer (mode synchrone) pour ensuite réalisé vos traitements sur ce que votre requête Ajax vous a renvoyée.

peut être qu'avec un peu de code, sa sera tout de même mieux pour comprendre ?
0