2010-12-02 6 views
2

Je chargement d'un fichier .php via un appel AJAX ExtJS comme ceci:Pourquoi le Javascript généré par PHP ne fonctionnerait pas dans le fichier chargé via AJAX?

menuItemApplication.header.on('click', function() {    
    Ext.Ajax.request({ 
     url: 'content/view_application.php', 
     success: function(objServerResponse) { 
      var responseText = objServerResponse.responseText; 
      regionContent.update(responseText); 
      var scripts, scriptsFinder=/<script[^>]*>([\s\S]+)<\/script>/gi; 
      while(scripts=scriptsFinder.exec(responseText)) { 
       eval(scripts[1]); 
      } 
     } 
    }); 
}); 

Javascript dans le fichier .php chargé EXÉCUTE fin:

<script type="text/javascript"> 
    regionContent.update('changed region content from within application view'); 
</script> 

Mais si le Javascript est généré par PHP, il est non exécuté:

<?php 
echo "<script type=\"text/javascript\">\n"; 
echo "regionContent.update('changed region content from within application view')';\n"; 
echo "</script>\n"; 
?> 

Oui les réponses sont les mêmes, comme on le voit dans le panneau net Firebug, ici avec Javascript qui fonctionne:

alt text

Et ici avec Javascript généré par PHP qui ne fonctionne pas:

alt text

Comment puis-je obtenir le Javascript généré par PHP pour exécuter?

Répondre

4

Ces réponses ne sont pas identiques. Vérifier la '; contre ; à la fin là.

<?php 
echo "<script type=\"text/javascript\">\n"; 
echo "regionContent.update('changed region content from within application view')';\n"; 
echo "</script>\n"; 
?> 

Versus

<?php 
echo "<script type=\"text/javascript\">\n"; 
echo "regionContent.update('changed region content from within application view');\n"; 
echo "</script>\n"; 
?> 
+0

Son une telle erreur facile à faire. Je suis surpris que la console d'erreur ne vous laisse pas savoir ce qui se passe. – DampeS8N

2

Il y a une citation supplémentaire dans votre code PHP, ce qui provoque les citations en Javascript pour fonctionner correctement; au lieu de:

echo "regionContent.update('changed region content from within application view')';\n"; 

Vous avez besoin:

echo "regionContent.update('changed region content from within application view');\n"; 
+0

BRAVO, affaire fermée – ajreal

Questions connexes