2009-11-24 2 views
1

Difficile d'expliquer cette question, mais je suis en train de passer des variables dans une page PHP à certaines entrées cachées html.Est-ce que php charge AVANT le 'corps html'?

Im récupérer ces valeurs à partir des entrées cachées avec une fonction javascript. Cette fonction est appelée comme ceci:

<body onload="function();"> 

Il fonctionne sur mon système maintenant, mais est-il possible que la valeur passée de php pourrait ne pas passer à travers parce que le corps a appelé la fonction avant le code php définit le type d'entrée caché?

Merci

Répondre

15

Vous avez peut avoir mélangé quelle partie fait quoi.

  • PHP génère la page HTML sur le côté serveur. Lorsque la page HTML arrive sur le navigateur, PHP a fait son travail. Il n'y a aucun moyen pour que PHP fasse quelque chose après avoir rendu le HTML.

  • Javascript est exécuté dans le navigateur de l'utilisateuraprès la page a été générée et chargée. (Ou pendant, comme le souligne jalonnage, Javasript peut fonctionner dans le navigateur avant que la page ne soit complètement chargée.)

  • Une commande Javascript ne peut pas communiquer avec le script PHP rendant la page, parce que lorsque Javascript entre en jeu, PHP est déjà parti.

Donc, la réponse à votre question est: Non, la fonction JS ne peut pas exécuter avant PHP est fait. Comme plusieurs commentateurs le soulignent, ce n'est pas tout à fait vrai. Un Javascript pourrait entrer en action avant les éléments HTML d'entrée ont été rendus. Dans votre exemple, le Javascript ne se déclenche que lorsque le document est complètement chargé. Dans cette constellation, la réponse est non, cela ne peut pas arriver.

+1

Javascript peut commencer à s'exécuter avant qu'une page soit complètement chargée/analysée. Si non, comment expliquez-vous presque toutes les fonctionnalités DOM de chaque framework JS? c'est-à-dire (jQuery) $ (document) .ready (function() {...}); – theraccoonbear

+0

theraccoonbear: Edited ma réponse pour souligner votre point. –

+0

Il a dit que le PHP génère des entrées cachées que le Javascript lit à partir. Il ne semble pas avoir de problème - je voulais juste confirmer que les choses tourneront toujours dans l'ordre qu'elles ont sur son système, ce qu'elles feront. – Chuck

2

Cela ne devrait pas poser de problème, car vous utilisez la propriété onload du corps, ce qui garantit le chargement de dom et de toutes les images.

En utilisant jQuery comme ci-dessous serait mieux à mon avis, les feux dès que le Royaume est prêt, plutôt que d'attendre toutes les images, etc.

$(document).ready(function() { 
    // do stuff here 
}); 

Ceci est aussi facile à faire à partir d'un JS externe fichier si nécessaire, ce qui vous aide à séparer logiquement votre code.

Questions connexes