Problème javascript XMLHttpRequest [Résolu/Fermé]

Signaler
-
 TwK38 -
Bonjour,
j'ai un souci dans ma source, elle me répond l'alert "fonctionne pas" quatre fois...
Le script n'est pas de moi
Voici la source, l'url "xmlurl" est valide ;)

	 		function getXhr(){
                                var xhr = null; 
				if(window.XMLHttpRequest) // Firefox et autres
				   xhr = new XMLHttpRequest(); 
				else if(window.ActiveXObject){ // Internet Explorer 
				   try {
			                xhr = new ActiveXObject("Msxml2.XMLHTTP");
			            } catch (e) {
			                xhr = new ActiveXObject("Microsoft.XMLHTTP");
			            }
				}
				else { // XMLHttpRequest non supporté par le navigateur 
				   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
				   xhr = false; 
				} 
                                return xhr
			}
			
			/**
			* Méthode qui sera appelée sur le click du bouton
			*/
			function go(form){
			var pseudo = form.dyn.value;
			var xmlurl = "http://blablabla.com/xml.php?nick=" + pseudo ;
				var xhr = getXhr()
				// On défini ce qu'on va faire quand on aura la réponse
				xhr.onreadystatechange = function(){
					// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
					if(xhr.readyState == 4 && xhr.status == 200){
						alert(xhr.responseText);
						alert("fonctionne!!!");
					}
					alert("fonctionne pas...");
				}
				xhr.open("GET", xmlurl,true);
				xhr.send(null);
			}

5 réponses

Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
888
pourquoi mettre comme url :var xmlurl = "http://blablabla.com/xml.php?nick=" + pseudo ;

avec ajax on ne peut pas appeler un autre site, alors si tu est sur le même site mets une adresse relative

xml.php?nick=" + pseudo ; si tu es dans le même dossier bien sur
justement non, je suis pas sur le même site... :(
Une solution ?

Merci
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
888
Ajax ne te permet pas d'appeler une url d'un autre site
J'ai compris... mais existe-t-il une alternative ?
merci
Messages postés
18558
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 mai 2021
4 289
Le problème est la :
xhr.onreadystatechange = function(){
	// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
	if(xhr.readyState == 4 && xhr.status == 200){
		alert(xhr.responseText);
		alert("fonctionne!!!");
	}
	alert("fonctionne pas...");
}
La fonction est appellée 4 fois, car il y a 4 status dans une requête XMLHttpRequest.
Et à chaque fois qu'elle est appelée, l'alerte "Fonctionne pas..." s'affiche, car il n'y a pas de conditions.
Donc il suffit de retirer la ligne 'alert("fonctionne pas...");'.

Pour régler le problème du site externe, crées un script .php sur ton serveur qui se chargera de récupérer la source avec file_get_contents.
Voilà à quoi ce script pourrait ressembler :
<?php echo file_get_contents('http://blablabla.com/xml.php?nick='.$_GET['nick']); ?>
Donc
var xmlurl = "http://blablabla.com/xml.php?nick=" + pseudo;
Devient :
var xmlurl = "script.php?nick=" + pseudo;
Merci à toi avion-f16, c'est pafait !

je souhaitais éviter de faire appel à du php, mais finalement, pourquoi se prendre la tête ? :P

bonne soirée à vous,
TwK38