IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

[AJAX] Requête dans un autre domaine


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 21
    Par défaut [AJAX] Requête dans un autre domaine
    Bonjour à tous,
    je suis sur un petit souci simple, enfin je le croyais...
    J'ai une page html (sous Lotus Domino pour être complétement honnête) qui fait un appel Ajax à un mini web service dans un domaine différent, une url qui renvoi un jeton codé

    Voici le code de la page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    <html>
    <head>
    <meta http-equiv="Content-Script-Type" content="text/javascript" />
    <script language="javascript">
    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
    }
     
    function tester(){
    	var request = "http://url_WebService/WSCreationJeton?numIndiv=1234";
     
    	var xhr = getXhr();
    	xhr.open("GET",request,true);
     
    	// 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 recu et que le serveur est ok
    	 	if(xhr.readyState == 4){
    			if (xhr.status == 200){
    				document.getElementById("result").innerHTML = xhr.responseText;
    			}else{
    				document.getElementById("result").innerHTML = "<h1>Erreur de chargement - status = " + xhr.status + " /"  + xhr.responseText + "</h1>";
    			}
    		}else{
    			document.getElementById("result").innerHTML = '<h1>Recherche en cours</h1><img src="/testWEB.nsf/ajax-loader.gif">';
    		}
    	}
    	xhr.send(null);
    }
     
    </script>
    </head>
    <body>
    <h3>Web Service</h3>
    <div id="result"></div>
    <input type="button" value="click" onclick="tester();" />
    </body>
    </html>
    J'ai l'erreur suivant en cherchant bien grasse à un débug fait par un appel Prototype
    Appel { exception=[Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIXMLHttpRequest.send]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: http://site/js/lib/prototype.js :: anonymous :: line 1234" data: no]}

    Il semble que FireFox perde les pédales quand l'appel Ajax doit communiquer avec une url d'une autre domaine, ce qui est mon cas.
    Une solution existe-t-il ?

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 89
    Par défaut
    Bonjour,

    Firefox, comme tout autre navigateur, ne te permet pas de faire un appel AJAX vers un autre domaine.

    Des solutions existent, comme, dans le désordre : JSONP, proxy sur le serveur, passage de paramètres par iframes, etc...

    Cherches "javascript cross domain" dans google.

    Bonne lecture... et bonne chance !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 21
    Par défaut
    Merci de ce retour....

    J'ai pour le moment fabriquer une solution de contournement mais elle ne me plait pas!!
    Je passe par le serveur qui fait la requête et me renvoi la réponse mais la solution ne me plait pas. En plus elle me renvoi pas un texte mais une page pseudo page web donc il faut que je filtre le html pour ne garder que le texte de la clé renvoyer et j'ai un problème d'interprétation...

    Je passe par une expression régulière pour filtrer le HTML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    reg=new RegExp("<.[^<>]*>", "gi" );
    var retour = xhr.responseText.replace(reg, "" );
    Mais une fois le replace fait j'ai la désagréable surprise de trouver
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    retour = "\n\n\n\nERROR\n\n\n"
    Je ne suis pas doué avec les expressions régulière donc je suis un peu surpris là!!

Discussions similaires

  1. [MySQL] Afficher le résultat d'une requête dans une autre page
    Par mohamed2006 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 29/02/2008, 21h02
  2. Executer une requête dans une autre requête
    Par Zachs dans le forum Langage SQL
    Réponses: 5
    Dernier message: 19/12/2007, 11h45
  3. Réponses: 1
    Dernier message: 17/03/2007, 21h21
  4. Réponses: 5
    Dernier message: 24/08/2006, 15h00
  5. Transformer les résultats d'une requête dans un autre ordre
    Par keikun dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 12/04/2006, 16h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo