cs_chapata
Messages postés214Date d'inscriptionmercredi 2 février 2005StatutMembreDernière intervention 9 avril 2010
-
19 mai 2008 à 14:48
cs_chapata
Messages postés214Date d'inscriptionmercredi 2 février 2005StatutMembreDernière intervention 9 avril 2010
-
19 mai 2008 à 15:31
Bonjour à tous,
(j'espère avoir posté dans le bon endroit ...)
voilà je suis débutant en Ajax, je me suis inspiré des différentes méthodes sur le forum. mais j'ai un problème de taille, qui me semble super simple à régler mais, sans succès (d'où ma question).
Mon code : ajax.js
var httpObj = null;
var httpStr = null;
var elmtHtml = null;
function sendRequest( httpStr , elmtHtml ) {
if ( window.XMLHttpRequest ) {
// Objet XmlHttpRequest pour les moteurs GECKO
httpObj = new XMLHttpRequest();
} else if ( window.ActiveXObject ) {
// Objet XmlHttpRequest pour Internet Explorer
httpObj = new ActiveXObject( 'Microsoft.XMLHTTP' );
} else {
// Navigateur non-compatible
alert( 'Votre navigateur ne supporte pas les objets XMLHTTPRequest...' );
return;
}
// On ouvre la requete vers la page désirée
httpObj.open( 'GET', httpStr, false );
// On lui donne le pointeur de fonction de retour
httpObj.onreadystatechange = returnRequest;
// On envoi la requete
httpObj.send( null );
}
function returnRequest() {
// Sur le retour de la requete, on teste son état if ( httpObj.readyState 4 && httpObj.status 200)
// On injecte notre retour dans la DIV prevue a cet effet
document.getElementById(elmtHtml).innerHTML = httpObj.responseText;
}
}
mais elmtHtml a la valeur "null".
Si je positionne des alert(elmtHtml) dans 'sendRequest()', j'obtiens bien 'ma variable' mais dans la fonction 'returnRequest()' elmtHtml a la valeur Null.
Je suis obligé d'écrire en dur dans returnRequest() ma variable. et ca, je ne le veux pas...
Si une personne pouvait m'aiguiller afin de régler ce petit souci ... ce serait super !
merci d'avoir au moins lu ce message.
Zobibol
Messages postés469Date d'inscriptionmercredi 9 janvier 2002StatutMembreDernière intervention20 février 20176 19 mai 2008 à 15:13
Salut, pour ce qui est de passer par une variable globale, à mon avis, c'est pas le top, si tu balances plus d'une requête ajax simultanément, ça risque de planter..
L'erreur est très très probablement dûe au fait que la variable globale elmtHtml n'est jamais initialisée
essais donc
function sendRequest( httpStr , _elmtHtml) {
elmtHtml = _elmtHtml;
if ( window.XMLHttpRequest ) {
// Objet XmlHttpRequest pour les moteurs GECKO
httpObj = new XMLHttpRequest();
} else if ( window.ActiveXObject ) {
// Objet XmlHttpRequest pour Internet Explorer
httpObj = new ActiveXObject( 'Microsoft.XMLHTTP' );
} else {
// Navigateur non-compatible
alert( 'Votre navigateur ne supporte pas les objets XMLHTTPRequest...' );
return;
}
// On ouvre la requete vers la page désirée
httpObj.open( 'GET', httpStr, false );
// On lui donne le pointeur de fonction de retour
httpObj.onreadystatechange = returnRequest;
// On envoi la requete
httpObj.send( null );
}
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 19 mai 2008 à 14:53
Bonjour,
à priori, rien à voir avec AJAX ( même si je n'ai pas controlé la séquence )
c'est quoi elmtHtml ? t'es sûr que ce n'est pas "elmtHtml" ?
<hr /> Cordialement Bul [mon Site] [M'écrire]
cs_chapata
Messages postés214Date d'inscriptionmercredi 2 février 2005StatutMembreDernière intervention 9 avril 20105 19 mai 2008 à 15:03
Hello ,
elmtHtml est la balise
... patati patata ...
devant réceptionner le retour de returnRequest().
bien évidemment j'ai toutes mes fonctiones coté serveur fonctionnant (php).
ca marche tres bien dans mon code js si je mets :
document.getElementById('divAjaxcalendrier').innerHTML = httpObj.responseText;
mais pas du tout si je mets le nom donner à ma variable ... (ici : elmtHtml)
la fonction
> function sendRequest( httpStr , elmtHtml )
prend comme argument l'url passée et l'applique à
> httpObj.open( 'GET', httpStr, false );
en retour j'attends donc une réponse au changement du statut :
> httpObj.onreadystatechange = returnRequest;
et la fonction returnRequest() envoie à mon elmtHtml ma réponse.
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 19 mai 2008 à 15:12
>ça marche tres bien dans mon code js si je mets :
> document.getElementById('divAjaxcalendrier')....
donc... elmtHtml n'est pas = document.getElementById('divAjaxcalendrier')
ou pas une variable globale ou...
à priori ne cherche pas ailleurs.
<hr /> Cordialement Bul [mon Site] [M'écrire]
Vous n’avez pas trouvé la réponse que vous recherchez ?
Zobibol
Messages postés469Date d'inscriptionmercredi 9 janvier 2002StatutMembreDernière intervention20 février 20176 19 mai 2008 à 15:23
si j'étais toi, j'utiliserais plutôt le framework prototype.js qui va te rendre beaucoup plus service (et t'aurais éviter cette erreur), mais bon, ce que j'en dis euh, j'écris ;o)
cs_chapata
Messages postés214Date d'inscriptionmercredi 2 février 2005StatutMembreDernière intervention 9 avril 20105 19 mai 2008 à 15:31
j'en ai déjà entendu parler (plutot lu) mais jamais testé.
quand j'aurai le temps ... je regarderai. Pour le moment je débute ...
je suis sur un calendrier de planification de lot de facturation client, alors j'ai pas trop le temps de m'amuser.
J'utilise Ajax pour éviter de rechargé la page, lorsque que je survole mes dates et me balades dans mon calendrier. Du coup l'utilisateur visualise les données intuitivement.
j'ai peur que si j'utilise framework prototype.js maintenant je n'utilise pas tout ... enfin à voir...