Ajax ne fonctionne pas... ?
Fetide68
Messages postés
745
Date d'inscription
Statut
Membre
Dernière intervention
-
Fetide68 Messages postés 745 Date d'inscription Statut Membre Dernière intervention -
Fetide68 Messages postés 745 Date d'inscription Statut Membre Dernière intervention -
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
- Erreur 3000 france tv - Forum Lecteurs et supports vidéo
- Erreur t32 ✓ - Forum Livebox
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
- Erreur 0x80070643 - Accueil - Windows
- Erreur 4101 france tv - Forum Lecteurs et supports 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.