Mon problème se situe lors des appels AJAX.
J'ai une page http://www.espaceglobal.com/montest/test.php qui affiche un bouton pour executer la page traiteTest.php. Mais quand je clic sur mon bouton, rien ne se passe. Comme si le <script >alert("Calendrier OK")</script> n'était pas pris en compte.
Voici le code de test.php
/***********************************************
* Jason's Date Input Calendar- By Jason Moon http://calendar.moonscript.com/dateinput.cfm * Script featured on and available at http://www.dynamicdrive.com * Keep this notice intact for use.
***********************************************/
</script>
<script language="javascript" type="text/javascript">
function TraiterCalendrier(){
var ajaxRequest; // The variable that makes Ajax possible!
evalScripts:true
try{
// Opera 8.0+, Firefox, Safari
ajaxRequest = new XMLHttpRequest();
} catch (e){
// Internet Explorer Browsers
try{
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try{
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e){
// Something went wrong
alert("Your browser broke!");
return false;
}
}
}
// Create a function that will receive data sent from the server
ajaxRequest.onreadystatechange = function(){
if(ajaxRequest.readyState == 4){
var ajaxDisplay = document.getElementById('ajaxZoneCalendrier');
ajaxDisplay.innerHTML = ajaxRequest.responseText;
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 8 nov. 2008 à 16:31
bonjour,
t'as pas du chercher bien longtemps !
problème récurent !
avec ajax, le javascript renvoyé n'est pas interprété,
il faut que tu les fasses "manuellement" !
on en causait il n'y a pas très longtemps ici-même,
quand à l'opportunité de faire de genre de chose, je ne vais
pas une nouvelle fois tenter de convaincre que ce n'est
pas une bonne approche, car c'est quasi toujours inutile
( à mon avis ) de rapatrier du javascript.
Cordialement Bul [mon Site] [M'écrire]
lkdsak
Messages postés4Date d'inscriptionsamedi 29 septembre 2007StatutMembreDernière intervention10 novembre 2008 8 nov. 2008 à 23:02
Je comprend ton point. Cependant l'application que je suis entrain de faire est plus compliqué que mon exemple. L'exemple plus haut n'était que pour simplifier mon code et pour permettre à vous tous de m'aider.
À vrai dire, ce que je veux afficher dans <SCRIPT></SCRIPT> c'est du code qui me permet d'afficher un calendrier popup piker. J'ai récupéré ce code. Cependant pour que le calendrier fonctionne, l'appel de la function ce fait comme ceci
/***********************************************
* Jason's Date Input Calendar- By Jason Moon http://calendar.moonscript.com/dateinput.cfm * Script featured on and available at http://www.dynamicdrive.com * Keep this notice intact for use.
***********************************************/
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 9 nov. 2008 à 09:24
et bien ? met cette fonction DateInput dans ta page appelante
tu n'auras plus le souci.
sinon, tu sembles utiliser un framework ?
il contient tout ce qu'il faut pour faire exécuté du js chargé avec ajax
( même si je pense que c'est inutile )
Bul [mon Site] [M'écrire]
Vous n’avez pas trouvé la réponse que vous recherchez ?
lkdsak
Messages postés4Date d'inscriptionsamedi 29 septembre 2007StatutMembreDernière intervention10 novembre 2008 10 nov. 2008 à 03:49
Bon, j'ai lu l'ensemble des trucs, puis j'ai essayé tout et ça ne fonctionne pas.
Ça m'embête car la fonction
function evalScript(string){
var allScripts = new RegExp('<script[^>]*>([\\S\\s]*?)<\/script>', 'img');
var oneScript = new RegExp('<script[^>]*>([\\S\\s]*?)<\/script>', 'im');
var tabScripts = string.match(allScripts) || [];
for(var i = 0; i < tabScripts.length; i++){
eval(tabScripts[i]);
}
}
plante toujours sur cette ligne eval(tabScripts[i]);
En tout cas, merci quand même, je vais faire mon application autrement. sans ajax.
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 10 nov. 2008 à 09:25
1ère approche : ajax retourne une page html avec du javascript |
----
demo.htm |
demo.php |
----
<html>
demo.htm
<script>
var xml = new XMLHttpRequest();
xml.open("get","demo.php", false);
xml.send("");
var d=document.getElementById("txt");
d.innerHTML=xml.responseText;
eval(d.getElementsByTagName('script')[0].text);
</script>
2ème approche : ajax retourne uniquement des données |
----
<html>
demo.htm
<script>
function appel()
{ alert("demo"); }
var xml = new XMLHttpRequest();
xml.open("get","demo.php", false);
xml.send("");
document.getElementById("txt").innerHTML=xml.responseText;
appel();
</script>
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 10 nov. 2008 à 14:48
>>j'ai compris maintenant comment fonctionne la fonction eval()
nickel
s'il y avait plusieurs <script>, il faudrait faire une ch'tiote boucle
et on peut, bien entendu, faire autrement ( et mieux ! )
>>Je
vais tout de même éviter de l'utiliser.
>>De plus, je vais concentrer le
Ajax sur des traitements particulié et non pas faire tout en Ajax.
sage décision... si je puis me permettre
ajax c'est fabuleux, encore faut-il l'utiliser pour ce quoi il est fait,
c'est comme tout.