Ajax : variable de réponse

Résolu
cs_chapata Messages postés 214 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 9 avril 2010 - 19 mai 2008 à 14:48
cs_chapata Messages postés 214 Date d'inscription mercredi 2 février 2005 Statut Membre Derniè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.

ChaPaTa


/FONT>

7 réponses

Zobibol Messages postés 469 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 20 février 2017 6
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 );
}

pour voir un peu !

[o-_-o]
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
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]
0
cs_chapata Messages postés 214 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 9 avril 2010 5
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.

ChaPaTa
/FONT>
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
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]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_chapata Messages postés 214 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 9 avril 2010 5
19 mai 2008 à 15:18
Hello ,

OK, cool pour les réponses. Effectivement, la varaible n'était jamais initialisée. donc maintenant c'est fait.

je vais pouvoir continuer ...

Big Up à vous 2 !

ChaPaTa/FONT>
0
Zobibol Messages postés 469 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 20 février 2017 6
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)

[o-_-o]
0
cs_chapata Messages postés 214 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 9 avril 2010 5
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...

ChaPaTa/FONT>
0
Rejoignez-nous