J'ai une page Web qui affiche des commentaires et les utilisateurs peuvent cliquer sur un lien "Signaler" pour signaler un commentaire inapproprié.
Lorsqu'ils cliquent sur le lien Signaler, j'utilise AJAX et innerHTML pour afficher une liste déroulante sous le commentaire avec un code de raison, par exemple spam, offensant, sans rapport avec le sujet, etc. ainsi qu'un bouton Annuler.
Si l'utilisateur clique sur "Submit", je veux utiliser une autre requête AJAX pour envoyer sa réponse à un fichier PHP, où la base de données est mise à jour, et il reçoit un "Thank you" de son côté (sans recharger la page). Je veux essentiellement que le DIV qui affiche la liste déroulante soit remplacé par "Merci" à l'aide d'une autre demande AJAX.
C'est là qu'est le problème. Il semble que je ne puisse pas exécuter une demande AJAX à partir de la réponse HTML de la première demande AJAX. Les fonctions JavaScript échouent - même un simple Alert('hello world') ne fonctionne pas. J'ai essayé de placer les fonctions JavaScript dans la page principale qui appelle la première demande AJAX, ainsi que dans le fichier PHP qui s'affiche comme la réponse HTML de la première demande AJAX, mais je n'ai pas eu de chance - les fonctions ne s'exécutent tout simplement pas lorsqu'elles sont appelées.
Tout fonctionne bien si je charge le fichier PHP en externe, je sais donc que le JavaScript est correct. Mais cela ne fonctionne pas lorsque je charge le fichier PHP dans le DIV de réponse HTML et que j'appelle le JavaScript à partir de là.
Donc, pour résumer, comment exécuter des fonctions JavaScript à partir de la réponse HTML d'une requête AJAX ?
EDIT : voici un exemple de ce que je veux faire :
Il s'agit de la partie AJAX qui remplit le DIV lorsque la personne clique sur le lien Drapeau :
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4)
{
document.getElementById(whichdiv).innerHTML=xmlhttp.responseText;
}
};
La valeur de xmlhttp.responseText provient de ce fichier externe :
<input type="hidden"/>
<script type="text/javascript" language="javascript">
function displayalert()
{
alert ('Hello World!');
}
</script>
<form name="myform" id="myform">
<input type="text" name="myfield" value="teststring"/><br/>
<input type="button" name="button" value="Submit"
onclick="displayalert();"/>
</form>
Remarque : le <input type="hidden"/>
Ce qui précède vient d'une suggestion que j'ai trouvée sur le site http://msdn.microsoft.com/en-us/library/ms533897%28VS.85%29.aspx .
Lorsque l'utilisateur clique sur le bouton, la fonction javascript displayalert() ne s'exécute pas. La boîte d'alerte ne s'affiche jamais. Si je charge le fichier en externe au lieu de l'appeler avec innerHTML, le script fonctionne bien.
Le xmlhttp.responseText peut-il contenir du code JavaScript ?