Problème javascript XMLHttpRequest

Résolu/Fermé
TwK38 - 3 janv. 2010 à 17:07
 TwK38 - 3 janv. 2010 à 19:49
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

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
3 janv. 2010 à 17:19
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
0
justement non, je suis pas sur le même site... :(
Une solution ?

Merci
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
3 janv. 2010 à 17:32
Ajax ne te permet pas d'appeler une url d'un autre site
0
J'ai compris... mais existe-t-il une alternative ?
merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
3 janv. 2010 à 18:44
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;
0
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
0