{Ajax} gnération de sortie impossible

Utilisateur anonyme -  
Doctor C Messages postés 648 Statut Membre -
Bonjour,
j'ai un petit problème, je ne comprend pas pourquoi le code ci-dessous ne fonctionne pas, il devrait normalement afficher la réponse dans le div d'id age, mais cela n'affiche rien, j'ai déjà vérifier le reste et cela fonctionne ! Il n'y a que cette partie qui est en tort :
function handleServerResponse2()  
{  
  // Lire le message du serveur.  
  // Générer la sortie HTML.  
  var html2 = xmlHttp2.responseText;    
  // Obtenir une référence à l'élément <div> de la page.  
  myDiv2 = document.getElementById("age");  
  // Afficher la sortie HTML.  
  myDiv2.innerHTML = "Modifier : " + html2;  
}


A voir également:

8 réponses

Doctor C Messages postés 648 Statut Membre 399
 
Bonjour,

Du premier coup d'oeil, ton code semble correct.

Ce que je ferais personnellement pour isoler le problème serait de regarder ce qui se passe à chaque ligne de code (voir code ci-bas) en commençant bien sûr par vérifier que tu entres dans la fonction.

function handleServerResponse2()   
{  
  alert("Entre dans la fonction.");  
  // Lire le message du serveur.   
  // Générer la sortie HTML.   
  var html2 = xmlHttp2.responseText; 
  alert("Reponse AJAX: " + html2);     
  // Obtenir une référence à l'élément <div> de la page.   
  myDiv2 = document.getElementById("age"); 
  alert("Div: " + myDiv2);   
  // Afficher la sortie HTML.   
  myDiv2.innerHTML = "Modifier : " + html2;   
}


Tu pourrais également utiliser des débogueur Web comme FireBug pour Firefox.

Echo "Lima Mike Alfa";
0
Utilisateur anonyme
 
j'ai testé et cela n'a rien sorti, voici l'entièreté de mon code, si vous pouviez encore m'aider :
//Deuxième champ
var xmlHttp2 = createXmlHttpRequestObject();
function createXmlHttpRequestObject2() 
{
  // Conserver une référence à l'objet XMLHttpRequest.
  var xmlHttp2;
  // Créer l'objet XMLHttpRequest.
  try
  {
    // Supposer IE7, ou plus récent, ou un autre navigateur moderne.
    xmlHttp2 = new XMLHttpRequest();
  }
  catch (e)
  {
    // Supposer IE6, ou plus ancien.
    try
    {
      xmlHttp2 = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch(e) { }
  }
  // Retourner l'objet créé ou afficher un message d'erreur.
  if (!xmlHttp2)
    alert("Erreur de création de l'objet XMLHttpRequest.");
  else 
    return xmlHttp2;
}

function process_age()
{
  // Continuer uniquement si l'objet xmlHttp est valide.
  if (xmlHttp2)
  {
    // Tenter une connexion au serveur.
    try
    {
      // Initier la lecture du fichier depuis le serveur.
      xmlHttp2.open("GET", "js/modif_age.php?age_modif=1", true);
      xmlHttp2.onreadystatechange = handleRequestStateChange;
      xmlHttp2.send();
	  document.body.style.cursor = "wait";
    }
    // En cas d'échec, afficher l'erreur.
    catch (e)
    {
      alert("Connexion au serveur impossible :\n" + e.toString());
	  document.body.style.cursor = "default";
    }
  }
}

// Fonction appelée lorsque l'état de la réponse HTTP change.
function handleRequestStateChange2() 
{
  // Lorsque readyState vaut 4, lire la réponse du serveur.
  if (xmlHttp2.readyState == 4) 
  {
	  document.body.style.cursor = "default";
    // Continuer uniquement si l'état HTTP est "OK".
    if (xmlHttp2.status == 200) 
    {
      try
      {
        // Faire quelque chose avec la réponse du serveur.
        handleServerResponse();
      }
      catch(e)
      {
        // Afficher un message d'erreur.
        alert("Erreur de lecture de la réponse : " + e.toString());
		document.body.style.cursor = "default";
      }
    } 
    else
    {
      // Afficher un message d'état.
      alert("Problème d'obtention des données :\n" + xmlHttp2.statusText);
	  document.body.style.cursor = "default";
    }
  }
}

// Traiter la réponse reçue du serveur.
function handleServerResponse2()
{
  // Lire le message du serveur.
  // Générer la sortie HTML.
  var html2 = xmlHttp2.responseText;  
  // Obtenir une référence à l'élément <div> de la page.
  
  // Afficher la sortie HTML.
  myDiv2.innerHTML = "Modifier : " + html2;
  myDiv2 = document.getElementById("age");
}
0
Doctor C Messages postés 648 Statut Membre 399
 
Les problèmes que je vois:

- Peut-être que je suis aveugle mais tu n'appelles nulle part ta fonction process_age(). Étant donné qu'elle contient xmlHttp2.send();, tu dois absolument l'appeler.

- Tu appelles handleRequestStateChange et handleServerResponse mais je ne vois que handleRequestStateChange2 et handleServerResponse2 de définit. Les "2" me semblent superflus.

- Tu as inversé tes deux dernières lignes:
  myDiv2.innerHTML = "Modifier : " + html2;
  myDiv2 = document.getElementById("age");

0
Doctor C Messages postés 648 Statut Membre 399
 
Oh, et puis il serait plus simple d'utiliser une librairies comme JQuery ou Prototype JS. Toutes les initialisations et les états sont déjà gérés.

Par exemple, faire du AJAX avec JQuery est aussi simple que ça:
$.ajax({
   type: "POST",
   url: "some.php",
   data: "name=John&location=Boston",
   success: function(msg){
     alert( "Data Saved: " + msg );
   }
 });

Source (en anglais): https://api.jquery.com/jQuery.ajax/
0

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

Posez votre question
Utilisateur anonyme
 
Oui, mais j'appelle process_age dans un lien !
0
Utilisateur anonyme
 
ET le 2 c'est car j'ai deux fois le même code dans une page, avec de légères différences !
0
Utilisateur anonyme
 
Voici la ligne d'appelle de la fonction :
<font color="#00CC33"><div id="age"><b>Vous avez soumis avec succès ce champ ! (<a href="#" OnClick="process_age();">Modifier</a>)</b><input type="hidden" name="age" value="'.$_SESSION['age'].'"></div></font>
0
Doctor C Messages postés 648 Statut Membre 399
 
Hmm, je ne sais pas exactement comment est découpé et où est placé ton code mais je ne sais pas si la fonction process_age va savoir qu'est-ce que xmlHttp2 étant donné qu'il est déclaré hors de la fonction.

Tu pourrais essayer de rajouté ce else pour voir si l'erreur est là:

function process_age()  
{  
  // Continuer uniquement si l'objet xmlHttp est valide.  
  if (xmlHttp2)  
  {  
    // Tenter une connexion au serveur.  
    try  
    {  
      // Initier la lecture du fichier depuis le serveur.  
      xmlHttp2.open("GET", "js/modif_age.php?age_modif=1", true);  
      xmlHttp2.onreadystatechange = handleRequestStateChange;  
      xmlHttp2.send();  
   document.body.style.cursor = "wait";  
    }  
    // En cas d'échec, afficher l'erreur.  
    catch (e)  
    {  
      alert("Connexion au serveur impossible :\n" + e.toString());  
   document.body.style.cursor = "default";  
    }  
  } else {  
    alert("Objet xmlHttp non valide.");  
  }  
}

S'il te sort le message "Objet xmlHttp non valide.", peut-être faudrait-il que tu initialises ton objet xmlHttp dans ta fonction process_age.

Echo "Lima Mike Alfa";
0
Utilisateur anonyme
 
Toujours rien ! Cela n'affiche rien de rien !
0
Doctor C Messages postés 648 Statut Membre 399
 
Et bien dans ce cas, j'essaierais de reculer dans ton code en mettant des alert à des points stratégiques pour voir où ton code cesse de fonctionner.

Par exemple, est-ce que ton code entre dans la focntion process_age? Est-ce que le code détecte le onClick? etc.
0