Jeudi 14 janvier 2010,
L’objectif de cet article est de vous expliquer comment exécuter du JavaScript présent dans une réponse du serveur lors d’une requête AJAX avec Mootools.
En effet l’exécution des scripts présents dans la réponse, souvent, ne s’effectue pas correctement, pour cela nous allons l’exécuter manuellement. La technique consiste à exécuter le javascript seulement après le chargement de la page.
Dans la 1ère partie nous définissons un champ et un paragraphe qui sera remplis à l’aide des requêtes. Le code javascript permet en cas de changement de valeur du champ, d’effectuer une requête vers le serveur et d’exécuter le code javascript contenu dans la réponse du serveur. Ce code nécessite, évidemment, la présence de la librairie Mootools.
<select name="champ" id="champ">
<option value="Val1" >Val1</option>
<option value="Val2" >Val2</option>
<option value="Val3" >Val3</option>
</select>
<p id="place"></p>
<script type="text/javascript">
window.addEvent('domready', function() {
var myRequest = new Request.HTML({ method: 'post',
url: 'ajax.php?requete=test',
evalScripts:false, // on désactive le javascript
evalResponse:false, // on l'exécute manuellement
onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
$('place').set('html',responseHTML); //Injection du contenu
$exec(responseJavaScript); // exécution du javascript
//manuellement APRES le chargement de l'élément
}
});
//en cas de changement de valeur du champ on effectue une requête
$('champ').onchange = function () {
myRequest.send('param=' + $('champ').value );
};
});
</script>