2009-07-09 10 views
1

J'utilise mon php pour appeler une fonction js comme ceci:Problème appeler une fonction js de php

<?php 
$chk=1; 
if($chk==1) 
{ 
    echo '<script>testing();</script>'; 
} 
?> 

et mes js ressemble:

function testing() 
{ 
    document.getElementById("mainbody").innerHTML="This is my first JavaScript!"; 
} 

Js est un fichier externe .

Mon html ressemble:

<html> 
<head> 
<script src="qotw.js"></script> 
</head> 
    <body> 
    <div id="mainbody"></div>  
    </body> 
</html> 

mais cela ne fonctionne pas. Qu'est-ce que je fais de mal ici? S'il vous plaît dites-moi si vous le savez.

Meilleur Zeeshan

+0

inclure le html en sortie de votre script - je suppose que vous avez juste quelque chose qui manque. –

+0

@Paul, pourquoi avez-vous ajouté les balises SCRIPT? Êtes-vous sûr qu'il les utilise? –

+0

Je ne l'ai pas fait, j'ai juste reformaté –

Répondre

1

Essayez de tester les éléments suivants dans l'ordre:
premier: Votre script est appelé

<script type="text/javascript">alert("hello");testing();</script> 

seconde: La fonction est appelée

function testing() { 
    alert('inside testing'); 
} 

troisième: Comme indiqué plus haut,

if (document.getElementById("mainbody") == null) alert('yep, its null'); 

puis faites-nous connaître les résultats

+0

Le script n'est pas appelé.j'ai essayé echo ' '; et aucune alerte n'est arrivée. –

+0

mais si j'essaye l'écho "show result"; Ça marche. –

7

Vous exécutez le script avant la div que vous ciblez existe, de sorte que le retour appel document.getElementById une valeur false au lieu d'un HTMLElementNode.

Soit vous avez besoin de déplacer l'élément script il est donc après la div, ou affecter la fonction à un gestionnaire d'événements (onload par exemple) au lieu d'appeler directement.

Cela n'a rien à voir avec l'utilisation de PHP. Par ailleurs, votre code HTML est invalid et déclenche quirks mode.

+0

Non, ce n'est pas ce qui ne se passe pas. Le div id = mainbody a un bouton à l'intérieur, onclick = le js est appelé et à partir de là, on appelle php. –

+0

Vous ne pouvez pas appeler PHP depuis JS. PHP s'exécute sur le serveur, génère un document (contenant JS), le livre au client, le client exécute ensuite le JS. Il est trop tard pour que plus de PHP s'exécute à ce stade - une nouvelle requête HTTP doit être faite au serveur. Vous semblez avoir réduit votre cas de test trop loin et supprimé certaines des informations nécessaires pour voir toutes vos erreurs. – Quentin

1

Assurez-vous que 'testing' n'est pas appelé au-dessus de 'mainbody' dans le code, car alors le code serait exécuté à un moment donné pendant le chargement, quand l'objet n'existe pas.

Questions connexes