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

JavaScript Discussion :

[AJAX] ajax IE pas FireFox..?


Sujet :

JavaScript

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 745
    Points : 166
    Points
    166
    Par défaut [AJAX] ajax IE pas FireFox..?
    Bonjour,
    voila j'ai vu que le sujet a pas mal été traité sur le web, mais ttes les solutions apportées ne m'eclairent absolument pas donc je me permets de reposer la question pour avoir une reponse personnalisée...
    Voila j'ai le code suivant :
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    function AfficherPays( Culture, Enseigne ) { 
     document.getElementById('departement').style.visibility= 'hidden'; 
    			document.getElementById('btnValider').style.visibility= 'hidden';
    			  document.getElementById('SelectDep').style.visibility= 'hidden';
     
         var xhr_object = false;
     
            if (window.XMLHttpRequest) { // Mozilla, Safari,...
                xhr_object = new XMLHttpRequest();
     
     
     
     
                if (xhr_object.overrideMimeType) {
                    xhr_object.overrideMimeType('text/xml');
                    // Voir la note ci-dessous à propos de cette ligne
                }
            }
            else if (window.ActiveXObject) { // IE
                try {
                    xhr_object = new ActiveXObject("Msxml2.XMLHTTP");
                }
                catch (e) {
                    try {
                        xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
                    }
                    catch (e) {}
                }
            }
     
            if (!xhr_object) {
                alert('Abandon :( Impossible de créer une instance XMLHTTP');
                return false;
            }
     
     
           //xhr_object.open("POST", "test.asp", true);
    	   xhr_object.open("POST", "http://(..)/Site/test/testPays.asp", true)
     
           xhr_object.onreadystatechange = function() {
             if(xhr_object.readyState == 4 ){
    		 	 if (xhr_object.status == 200 ){
            	//alert(xhr_object.responseText);
    			//eval(xhr_object.responseText); 
    			//eval(xhr_object.responseXML);	  
    			//alert(xhr_object.responseXML.getElementsByTagName("IDLANGUE")[0].nodeValue);
    			//reponse = clean(xhr_object.responseXML.documentElement);	
    			//var reponse = xhr_object.responseXML;
    			//document.getElementById('text').value = xhr_object.responseXML.getElementsByTagName("IDLANGUE").item(0).firstChild.nodeValue; 
    			//var xmldoc = xhr_object.responseXML;
    			//var root_node = xmldoc.getElementsByTagName('IDLANGUE').item(0);
    			//alert(root_node.firstChild.value);
    			var nb = xhr_object.responseXML.getElementsByTagName("PAYS").length;
    			document.getElementById('SelectPays').options[0] = new Option("","");
    			for (cpt=0;cpt<nb;cpt++){
    				document.getElementById('SelectPays').options[cpt+1] = new Option(xhr_object.responseXML.getElementsByTagName("LIBELLE").item(cpt).firstChild.nodeValue, xhr_object.responseXML.getElementsByTagName("IDPAYS").item(cpt).firstChild.nodeValue);
            }
    		 }
    		 }
    		 }
     
             xhr_object.setRequestHeader("Content-Type" , "application/x-www-form-urlencoded; charset=iso-8859-15" );
           var data = "Culture=" + Culture + "&Enseigne=" + Enseigne;
               xhr_object.send(data);
            }
    ce code marche parfaitement sous IE mais pas sous FireFox, avec comme vous vous en doutez l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur : uncaught exception: Permission refusée d'appeler la méthode XMLHttpRequest.open
    Alors j'ai vu sur des forums comme quoi il fallait etre sur le meme serveur et des open avec des url du type http://...ne fonctionnerait pas, mais cela fonctionne sous IE!!!


    Donc siouplé, merci vraiument de me renseigner


    car mon but est bien d'envoyer des info sur un serveur distant et de recuperer un xml....

  2. #2
    Membre confirmé Avatar de yjuliet
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Août 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 362
    Points : 460
    Points
    460
    Par défaut
    J'ai eu entendu parler de solutions mettant en jeu des iFrames invisibles ouvertes sur le serveur distant, et qui permettent ainsi de faire tes requetes AJAX ailleurs que sur le serveur d'origine de la page ...
    Code exemple : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <html>
    <body>
     <div id="moncontenu">...</div>
     <iframe style="display: none; visibility: hidden; width:1px; height:1px; border:0" src="http://serveurdistant:port/page_ouvrant_une_connexion_http_sur_le_serveur "></iframe>
    </body>
    Tu peux récupérer par l'iframe le code distant, puis le parser et en faire ce que tu veux ...
    C'est pas hyper propre, mais ça doit marcher ...

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 745
    Points : 166
    Points
    166
    Par défaut
    c'est gentil mais j'aimerai comprendre pourquoi cela fonctionne parafaitement sous ie et pas sous ff et comment faire pour le faire fonctionner sous ff aussi simplement que sous ie....

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par Alex35
    c'est gentil mais j'aimerai comprendre pourquoi cela fonctionne parafaitement sous ie et pas sous ff et comment faire pour le faire fonctionner sous ff aussi simplement que sous ie....
    Je vais faire mon "Lapalisse" : c'est parce que IE l'autorise et pas Firefox (pb de sécurité) ....

    A+

  5. #5
    Membre confirmé Avatar de yjuliet
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Août 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 362
    Points : 460
    Points
    460
    Par défaut
    Citation Envoyé par Alex35
    c'est gentil mais j'aimerai comprendre pourquoi cela fonctionne parafaitement sous ie et pas sous ff et comment faire pour le faire fonctionner sous ff aussi simplement que sous ie....
    Je te prie de m'excuser, j'ai présumé que tu savais pourquoi, mais que tu cherchais une solution pour contourner ...
    Comme le dit E.Bzz,

    Citation Envoyé par E.Bzz
    c'est parce que IE l'autorise et pas Firefox

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 745
    Points : 166
    Points
    166
    Par défaut
    non c'est gentil de me proposer des solutions annexes, sincerement, surtout que je vais surment en avoir besoin mais bon je suis perplexe...
    et sinon en jouant le bourrin et en forcant FF a l'accepter :

    about:config
    signed.applets.codebase_principal_support a true

    alors la j'ai en erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur : [Exception... "'Permission refusée d'appeler la méthode XMLDocument.getElementsByTagName' when calling method: [nsIOnReadystatechangeHandler::handleEvent]"  nsresult: "0x8057001e (NS_ERROR_XPC_JS_THREW_STRING)"  location: "<unknown>"  data: no]


    mais sincerement merci de vos reponses

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 745
    Points : 166
    Points
    166
    Par défaut
    alors la.....
    quand j'envoie ma requete (open) en get et en true, la lorsque je fais une alrte de ma reponseXML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(xhr_object.responseXML);
    la je recois bien mon xml mais pas moyen de le traiter a cause du getelementbytagname, n'yaurait il pas un equivalent a cela qui fonctionne?

    Sinon pour repartir sur les solutions annexes, celle de l'iframe invisible ne me parait pas tres "propre", n'yaurait il pas d'autres solutions?
    D'avance merci!

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/09/2010, 13h00
  2. Réponses: 3
    Dernier message: 19/07/2010, 17h15
  3. [AJAX] Script qui plante IE mais pas Firefox
    Par Booyakha dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 31/05/2006, 18h40
  4. [AJAX] Ajax ne réactualise pas le javascript ?
    Par shadowbob dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 23/01/2006, 08h26

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