{Ajax} gnération de sortie impossible
Fermé
Utilisateur anonyme
-
Modifié par seby1996 le 15/12/2010 à 15:22
Doctor C Messages postés 627 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 19 février 2016 - 15 déc. 2010 à 19:19
Doctor C Messages postés 627 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 19 février 2016 - 15 déc. 2010 à 19:19
A voir également:
- {Ajax} gnération de sortie impossible
- Iphone 14 date de sortie - Guide
- Aucun périphérique de sortie n'a été trouvé - Forum Windows
- Airpods 3 date de sortie - Guide
- Aucun son ne sort de mon pc - Guide
- Erreur ajax ✓ - Forum Webmastering
8 réponses
Doctor C
Messages postés
627
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
19 février 2016
396
Modifié par Doctor C le 15/12/2010 à 15:53
Modifié par Doctor C le 15/12/2010 à 15:53
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");
}
Doctor C
Messages postés
627
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
19 février 2016
396
15 déc. 2010 à 16:41
15 déc. 2010 à 16:41
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");
Doctor C
Messages postés
627
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
19 février 2016
396
15 déc. 2010 à 16:45
15 déc. 2010 à 16:45
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>
Doctor C
Messages postés
627
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
19 février 2016
396
Modifié par Doctor C le 15/12/2010 à 17:04
Modifié par Doctor C le 15/12/2010 à 17:04
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";
Doctor C
Messages postés
627
Date d'inscription
mardi 12 juin 2007
Statut
Membre
Dernière intervention
19 février 2016
396
15 déc. 2010 à 19:19
15 déc. 2010 à 19:19
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.
Par exemple, est-ce que ton code entre dans la focntion process_age? Est-ce que le code détecte le onClick? etc.