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

jQuery Discussion :

Incompatibilité avec IE 09


Sujet :

jQuery

  1. #1
    kap
    kap est déconnecté
    Membre régulier
    Inscrit en
    Octobre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 188
    Points : 72
    Points
    72
    Par défaut Incompatibilité avec IE 09
    Bonjour à tous,

    J'utilise la librairie jQuery pour notamment gérer des appels AJAX Cross Domain à un serveur cartographique Google (je n'ai donc pas la main sur le serveur). Le code fonctionne bien sur Firefox mais pas sur IE9. J'ai le message d'erreur suivant dans la console :
    "SCRIPT5: Accès refusé."

    J'ai essayé plusieurs trucs à droite et à gauche mais sans succès (je ne suis pas sur d'avoir mis en place les différentes solutions convenablement).
    Voici mon code :
    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
    	function refreshLayer(id_layer){
     
    		console.log("refreshlayer");
    		var parameters = "id_layer=" + id_layer;
     
    		var request = {
    			success: displayFeatures,
    			data : {
    				where : parameters
    				},
    			layer: id_layer
    		}		
    		getFeaturesFromLayer(request);
    	}
    	function getFeaturesFromLayer(query){
     
    		elementDisplay("loader");
     
    		console.log("getFeaturesFromLayer");
     
    		query.url = "https://www.googleapis.com/mapsengine/v1/tables/" + tablePOI + "/features";
    		query.type = "GET";
    		query.dataType = "JSON",
    		//query.crossDomain = true;
    		query.xhrFields = {withCredentials: false};
    		query.error = handleApiError;
    		query.cache = false;
    		query.data.maxResults = 100;
    		query.headers = {"Authorization": "Bearer " + myAuthToken.access_token};		
    		console.log(JSON.stringify(query));
     
    		jQuery.support.cors = true;
    		$.ajax(query);}
    Avez-vous une idée? Merci d'avance pour votre aide.

  2. #2
    kap
    kap est déconnecté
    Membre régulier
    Inscrit en
    Octobre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 188
    Points : 72
    Points
    72
    Par défaut
    Bon, j'ai un peu avancé. Je suis le principe suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if ($.browser.msie && window.XDomainRequest) {
        // Use Microsoft XDR
        var xdr = new XDomainRequest();           
    	xdr.contentType = "text/plain";
            xdr.onload = function(){alert(xdr.responseText);};
    	xdr.open(query.type, query.url);
            xdr.send();
    } else {
            // your ajax request here
            $.ajax(query);
    }
    L'appel s'effectue bien mais je rencontre des problèmes pour initialiser mon objet XDomainRequest à partir de ma variable "query". Avec Ajax, la réponse du serveur est incluse dans le paramètre du callback en cas de succès. Ici, le résultat est porté par l'objet XDomainRequest. Je voudrais que le onload ressemble à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    xdr.onload = function(){
        displayFeatures(xdr.responseText);
    }
    Je dois faire ça à partir de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jquery.success = displayFeatures;
    Comment dois-je m'y prendre?

    // Edit :

    J'ai procédé de la sorte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    xdr.onload = function() {
    	var ch = "" + query.success;	
    	var res = ch.match(/function() [a-zA-Z]*/);
    	res = res[0].substring(9);
    	res = res + "(" + JSON.stringify(xdr.responseText) + ")";
    	alert(res);
    	eval(res);
    Est-ce améliorable?
    Il ne me reste plus qu'à générer l'URL à appeler à partir des propriétés de ma variable...

  3. #3
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 986
    Points : 44 168
    Points
    44 168
    Par défaut
    Bonjour,
    j'ai un peu de mal à suivre entre jQuery et javascript de base.

  4. #4
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    $.browser, obsolète depuis longtemps (version 1.3), n'existe plus dans les versions actuelles !

    Nous en sommes à "http//code.jquery.com/jquery-1.10.2.min.js".

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  5. #5
    kap
    kap est déconnecté
    Membre régulier
    Inscrit en
    Octobre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 188
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par NoSmoking Voir le message
    Bonjour,
    j'ai un peu de mal à suivre entre jQuery et javascript de base.
    Le code ajax tiens en cette ligne : $.ajax(query);
    Seulement avec IE09 j'ai une erreur "Access denied". En me renseignant j'ai vu l'exisence d'une librairie corrigeant ce problème: http://cdnjs.cloudflare.com/ajax/lib...request.min.js mais j'obtiens le même résultat. Du coup, j'essaye dorénavant de passer ma requête manuellement (d'où le code en javascript classique). Si tu as une solution pour que ma requête passe avec la méthode $.ajax(), je suis preneur

  6. #6
    kap
    kap est déconnecté
    Membre régulier
    Inscrit en
    Octobre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 188
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par danielhagnoul Voir le message
    $.browser, obsolète depuis longtemps (version 1.3), n'existe plus dans les versions actuelles !

    Nous en sommes à "http//code.jquery.com/jquery-1.10.2.min.js".
    J'utilise une librairie de migration pour pouvoir utiliser les méthodes obsolètes. J'ai utilisé cette technique plus parce je ne sais pas comment détecter mon navigateur en javascript.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <script src="https://code.jquery.com/jquery-2.0.3.min.js"></script>
    <script src="https://code.jquery.com/jquery-migrate-1.2.1.js"></script>

  7. #7
    kap
    kap est déconnecté
    Membre régulier
    Inscrit en
    Octobre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 188
    Points : 72
    Points
    72
    Par défaut
    Je viens de lire le lien suivant :
    http://blogs.msdn.com/b/ieinternals/...rkarounds.aspx

    A priori le problème pourrait venir du point 7 : j'accède à un serveur en https depuis une url en http. Une solution simple serait de passer en https, mais ensuite mon authentification à Google ne fonctionne plus... Je tourne un peu en rond

    // Edit
    Je viens de régler mon problème d'authentification Google en https. Mes requêtes Ajax ne fonctionnent toujours pas. J'ai du mal à identifer le problème.

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/08/2007, 14h58
  2. [AJAX] Incompatibilité avec IE (données non mis à jour)
    Par WeDgEMasTeR dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 23/05/2007, 19h46
  3. [EasyPHP] Incompatibilite avec Easy php
    Par stomerfull dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 12/12/2005, 12h24
  4. antivirus incompatibilite avec mysql ?
    Par ronando dans le forum Installation
    Réponses: 2
    Dernier message: 20/09/2005, 15h53

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