Bonjour,

Une question qui me tarabistouille et dont je n'arrive pas à avoir une réponse claire et nette.

Quand on appelle un script PHP en Ajax, qu'est ce que je dois indiquer dans la balise HEAD du script appelé :

Est ce que je dois redéfinir les balises <html> <meta charset>, <base href>, <meta name>, si elles sont identiques au script appelant ?
Est ce que je dois recharger les feuilles de style et les fichiers JS si ils sont déjà chargés par la page appelante ?

Dans mes derniers test, j'ai l'impression que non, mais je crois avoir eu des problème par le passé avec des librairies JS que j'ai du redéfinir ?

En clair, je suis paumé et je trouve pas d'infos sur le net.

Merci pour votre aide

Marco
Administrateur
Bonjour,

je vais être ch... en reprenant chaque inexactitude, en espérant que ce soit constructif quand même Smiley smile :
- un script n'a pas de balise head. La page HTML appelante a un élément head. Chaque iframe contenue dans la page appelante a également un élément head (mais il n'est pas question d'iframe ici)
- "appeler un script PHP en AJAX" : AJAX demande au serveur qu'il lui envoie un bout de HTML. Pas une page entière, pas du code PHP tel quel mais du code HTML généré par du PHP (pour d'autres serveurs ça sera du ruby, de l'ASP, du Python et même du JS avec Node.js mais là c'est juste pour embrouiller entre JS côté serveur - node - et JS côté navigateur Smiley langue ). Ce code HTML peut être un élément style contenant donc du CSS (mais c'est bien un élément HTML qui contient du CSS) ou un élément script contenant donc du JS (mais c'est bien un élément HTML qui contient du JS)

Le style CSS (de la page appelante... enfin je précise ça mais il n'y a pas de page appelée, juste du code HTML appelé et reçu/injecté un peu plus tard) est appliqué à tous les éléments de la page avant ou après appel.
Le JS par contre est exécuté avant la fin du chargement de la page ou juste après et selon ce que c'est ça ne va pas concerner des éléments HTML qui n'existent pas encore ! Si tu as fait du jQuery de la version avant 1.6, c'est la différence entre .live() et soit .bind() soit .click() et compagnie : .live() s'exécutait sur des éléments n'existant pas au moment où c'était exécuté

tl;dr Il n'y a qu'une seule page, l'appelante mais le code JS il s'exécute qu'une fois à moins d'avoir prévu l'inverse
Effectivement, t'es un peu ch.. Smiley cligne , mais j'ai fais simple. et Merci pour ta réponse qui confirme mes tests, mais je voulais une confirmation, car j'avais eu des problèmes par le passé et je voulais allégé au maximum le code HTML généré par mes scripts PHP qui s’exécute coté serveur et envoyé au navigateur Smiley langue Encore merci pour ton aide et tes explications Marco