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 :

Récupération de données en AJAX avec jQuery et IE [AJAX]


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    ILP
    ILP est déconnecté
    Membre éclairé
    Avatar de ILP
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2002
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 258
    Par défaut Récupération de données en AJAX avec jQuery et IE
    Bonjour,
    J'essaye de récupérer des données en AJAX, à l'aide de jQuery. Ma fonction récupère la géolocalisation du navigateur, puis envoie une requête REST sur les serveurs de GeoNames pour pouvoir avoir la ville et le pays du visiteur du site. Voici mon code :
    Code JavaScript : 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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    // Récupère l'adresse du visiteur
    function recupererAdresse()
    {
      // Affiche la barre de chargement
      $("#parcours").html("<img src=\"chargement.gif\" alt=\"Chargement...\" />");
     
      if (navigator.geolocation)
      {
        navigator.geolocation.getCurrentPosition(recupererPosition, erreurPositionnement);
      }
      else
      {
        alert("La g\351olocalisation n\'est pas support\351e par votre navigateur.");
     
        // Arrête l'affichage de la barre de chargement
        $("#parcours").empty();
      }
    }
     
    // Récupère la position du visiteur
    function recupererPosition(position)
    {
      jQuery.support.cors = true;
     
      $.ajax(
      {
        // Paramètre la requête AJAX
        url       : "http://ws.geonames.org/findNearbyPlaceName",
        dataType  : "xml",
        data      :
        {
          lang  : "fr",
          type  : "xml",
          lat   : position.coords.latitude,
          lng   : position.coords.longitude
        },
        beforeSend  : function()
        {
          // Affiche la barre de chargement
          $("#parcours").html("<img src=\"chargement.gif\" alt=\"Chargement...\" />");
        },
        success     : function(resultat)
        {
          // Arrête l'affichage de la barre de chargement
          $("#parcours").empty();
     
          // Récupère les informations reçu via GeoName.org
          $("#rue").val("");
          $("#ville").val($(resultat).find("name").text());
          $("#pays").val($(resultat).find("countryName").text());
        },
        error       : function(xhr, ajaxOptions, thrownError)
        {
          // Arrête l'affichage de la barre de chargement
          $("#parcours").empty();
     
          // Affiche le message d'erreur
          alert("Une erreur c\'est produite :\n" + thrownError + ".");
        }
      });
    };
     
    // Affiche un message s'il y a une erreur de positionnement
    function erreurPositionnement(erreur)
    {
      switch(erreur.code)
      {
        case erreur.PERMISSION_DENIED:
          alert("L\'utilisateur a refus\351 la demande de g\351olocalisation.");
          break;
        case erreur.POSITION_UNAVAILABLE:
          alert("L\'information de localisation est indisponible.");
          break;
        case erreur.TIMEOUT:
          alert("La demande de localisation de l\'utilisateur a expir\351.");
          break;
        case erreur.UNKNOWN_ERROR:
          alert("Une erreur inconnue c\'est produite.");
          break;
      }
    }
    Sous Firefox ou Chrome, le code passe impeccable. Mais avec Internet Explorer 9 j'ai droit au message :
    Une erreur c'est produite :
    No Transport.
    Ou :
    Une erreur c'est produite :
    Error: Accès refusé.
    Si j'ajoute la ligne :
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    jQuery.support.cors = true;
    Avant d'exécuter ma requête, comme préconisé dans le ticket #10660 de jQuery.
    Quelqu'un pourrait éclairer ma lanterne sur ce bogue d'Internet Explorer ?

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    Le bug est expliqué ici : http://stackoverflow.com/questions/1...cess-is-denied

    IE9 n'utilise pas l'objet XMLHTTPRequest, et donc ne fonctionne pas avec CORS. Il existe un plug-in pour corriger ce souci: https://github.com/jaubourg/ajaxHook...ter/src/xdr.js

  3. #3
    ILP
    ILP est déconnecté
    Membre éclairé
    Avatar de ILP
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2002
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 258
    Par défaut
    Merci beaucoup, ce petit script marche impec

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer les données en Ajax avec jQuery
    Par Rony Rauzduel dans le forum jQuery
    Réponses: 12
    Dernier message: 28/02/2013, 13h59
  2. [JQuery]FCK editor en ajax avec Jquery
    Par dembroski dans le forum jQuery
    Réponses: 1
    Dernier message: 10/09/2008, 22h55
  3. [JQuery] Requête ajax avec jQuery
    Par ApheX2 dans le forum jQuery
    Réponses: 3
    Dernier message: 28/08/2008, 22h40
  4. ajax avec jquery
    Par artotal dans le forum jQuery
    Réponses: 14
    Dernier message: 20/07/2008, 22h26
  5. Récupération de donnée formulaire AJAX vers PHP
    Par Starbug dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 29/10/2007, 18h38

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