{Ajax} gnération de sortie impossible
Utilisateur anonyme
-
Doctor C Messages postés 648 Statut Membre -
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 :
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:
- {Ajax} gnération de sortie impossible
- Remettre un pc en sortie d'usine - Guide
- Airpods 3 date de sortie - Guide
- Samsung a33 date de sortie - Guide
- Iphone 14 date de sortie - Guide
- Peripherique de sortie audio pour windows 10 gratuit - Télécharger - Pilotes & Matériel
8 réponses
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.
Tu pourrais également utiliser des débogueur Web comme FireBug pour Firefox.
Echo "Lima Mike Alfa";
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";
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");
}
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:
- 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");
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:
Source (en anglais): https://api.jquery.com/jQuery.ajax/
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/
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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>
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à:
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";
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";