Ajax ne fonctionne pas... ?
Fetide68
Messages postés
816
Statut
Membre
-
Fetide68 Messages postés 816 Statut Membre -
Fetide68 Messages postés 816 Statut Membre -
Bonjour,
Je n'arrive pas à utiliser Ajax sur un serveur (IZIHOST)... Ça ne marche pas non plus en local, mais j'ai simplifié le code pour chercher l'erreur et je ne la trouve pas...
J'ai juste demandé à JavaScript de m'indiquer quand le navigateur est prêt pour recevoir la requête. Donc avec ce code là, je devrais avoir un alert qui s'affiche "je suis pret". Or, ça ne réagit pas...
Je n'arrive pas à utiliser Ajax sur un serveur (IZIHOST)... Ça ne marche pas non plus en local, mais j'ai simplifié le code pour chercher l'erreur et je ne la trouve pas...
J'ai juste demandé à JavaScript de m'indiquer quand le navigateur est prêt pour recevoir la requête. Donc avec ce code là, je devrais avoir un alert qui s'affiche "je suis pret". Or, ça ne réagit pas...
function getXMLHttpRequest() {
var xhr = null;
if (window.XMLHttpRequest || window.ActiveXObject) {
if (window.ActiveXObject) {
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
} else {
xhr = new XMLHttpRequest();
}
}
else {
alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
return null;
}
return xhr;
}
function getDPE() {
var xhr = getXMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
alert ("je suis pret");
}
};
}
A voir également:
- Erreur ajax c est quoi
- Instagram une erreur s'est produite - Forum Instagram
- Erreur t32 ✓ - Forum Livebox
- Erreur lors de l'enregistrement du contact - Forum Xiaomi
- Erreur 0x80070643 - Accueil - Windows
- Iptv erreur de lecture - Forum TV & Vidéo
3 réponses
et la suite alors... lol :)
la tu nous sert ta fonction callback qui sera execute au retour d'une reponse mais tu n'a rien envoyé comme demande au serveur: donc tu n'aura jamais de reponse.
scriptTraitantLademande.php:
essaye deja ça et apres on affinera.
la tu nous sert ta fonction callback qui sera execute au retour d'une reponse mais tu n'a rien envoyé comme demande au serveur: donc tu n'aura jamais de reponse.
function getDPE() {
var xhr = getXMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
alert (xhr.responseText);
}
};
var noCache = "?t=" + new Date().getTime(); // et oui les navigateur sont paresseux, ils vont pas a tous les coup interroger le serveur :)
xhr.open("GET", "scriptTraitantLademande.php"+noCache, true); // GET: methode de transmission des donnée, scriptTraitantLademande.php : il traitera ta demande et te renvera une reponse , true: pour faire de l'asynchrone
// si tu est en POST alors instruction a rajouter: xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send(null); // envoi effectif de la demande, null pour dire ke tu ne passe pas de parametre, normal ici on est en get
}
scriptTraitantLademande.php:
<?php ... ... ... echo "je suis pret"; // au retour de cette fonction ce qui est dans le onreadystatechange sera executé. mais pas avant !!!!! ?>
essaye deja ça et apres on affinera.
Je croyais que le javascript s'exécutait dans l'ordre et donc que le xhr.onreadystatechange préparait la requête, alors j'avais réduit ma requête pour chercher d'ou venait l'erreur... Et comme, le onreadystatechange ne répondait pas, je me suis dit que c'était ça...
Mais en fait mon problème semble venir de la méthode post :
voilà ma fonction complète (elle est pas longue):
En GET ça marche, mais pas en POST...
Je vais le faire en GET (moins sécurisé ??) mais j'aimerais quand même comprendre mon erreur...
Au passage que fait exactement :
Je n'ai jamais eu de problème pour l'instant sur le rafraîchissement des pages apellées...
Merci pour ton aide. +1 !
Mais en fait mon problème semble venir de la méthode post :
voilà ma fonction complète (elle est pas longue):
function getDPE(id) {
var xhr = getXMLHttpRequest();
dpe = document.getElementById('dpe');
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
dpe.innerHTML = xhr.responseText;
}
};
xhr.open("POST", "construction/dpe.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send("ref="+id);
}
En GET ça marche, mais pas en POST...
Je vais le faire en GET (moins sécurisé ??) mais j'aimerais quand même comprendre mon erreur...
Au passage que fait exactement :
var noCache = "?t=" + new Date().getTime();
Je n'ai jamais eu de problème pour l'instant sur le rafraîchissement des pages apellées...
Merci pour ton aide. +1 !
ya pas de raison que le POST ne fonctionne pas !!! en general si ya un souci ce que soit tes données transmise sont incorrect ou parfois le chemin d'accès a l'url est incorrect, soit tu ne les recupere pas correctement.
Fais voir ton script dpe.php .
var noCache = "?t=" + new Date().getTime(); permet juste d'empecher le navigateur de nous revoyé ce qu'il mis dans son cache. C'est un probleme qui arrive souvent quand on fait de l'ajax. c'est tant mieu pour toi si ton navigateur est bien configurer pour ne pas te reservir le cache. du coup, pour ne pas prendre de risque, on interroge a chaque fois avec une url differente : ça m'etonnerai qu'on puisse le faire plusieur fois en une seconde :) !!! bon bref voila pour plus de details ya pas mal de litterature la dessus sur le net.
Fais voir ton script dpe.php .
var noCache = "?t=" + new Date().getTime(); permet juste d'empecher le navigateur de nous revoyé ce qu'il mis dans son cache. C'est un probleme qui arrive souvent quand on fait de l'ajax. c'est tant mieu pour toi si ton navigateur est bien configurer pour ne pas te reservir le cache. du coup, pour ne pas prendre de risque, on interroge a chaque fois avec une url differente : ça m'etonnerai qu'on puisse le faire plusieur fois en une seconde :) !!! bon bref voila pour plus de details ya pas mal de litterature la dessus sur le net.