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 :

Erreur (status à 0) jQuery ajax() avec IOS


Sujet :

jQuery

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Erreur (status à 0) jQuery ajax() avec IOS
    Bonjour,

    Je rencontre des difficultés à faire fonctionner un appel Ajax avec un Ipad. Le code ci-dessous fonctionne avec IE, FF et Chrome mais pas avec Safari installé par défaut sur Ipad.

    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
    $.support.cors = true;
    $.ajax({
        type:'GET',
        dataType: 'json',
        contentType: "application/json; charset=utf-8",
        headers: { "cache-control": "no-cache" },
        timeout: 5000,
        url:'https://xxxxxxx/recuperationInfoUtilisateur',
        crossDomain:false,
        cache:false,
        async:true,  
        success: function(data){
            alert("OK");
        },
        error:function(xhr, status, errorThrown) {
            alert("KO");
        }
    });
    J'utilise les librairies JS suivantes :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <script src="https://code.jquery.com/jquery-1.9.1.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/json3/3.2.6/json3.min.js"></script>

    Lors de l’appel de ce code par un Ipad, la fonction d’erreur est appelée et remonte les erreurs suivantes.


    xhr.status: 0
    xhr.statusText: error
    xhr.readyState: 0
    xhr.responseText:
    xhr.responseXML: undefined
    textStatus: error
    errorThrown:
    xhr.redirect: undefined

    Quelqu’un pourrait-il m’aider à résoudre ce problème.
    A noter que le problème se produit avec le type GET et POST mais pas avec un PUT

    Merci de votre aide

  2. #2
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Avoir status à 0 signifie que la requête a été stoppée avant envoi par la Same-Origin Policy. C'est peut-être parce que ta version de Safari ne supporte pas CORS. Vérifie sur http://caniuse.com/#search=cors.

    Edit: en y réflechissant je ne suis pas sûr qu'il y ait un lien avec CORS, mais le status 0 est catégorique : il y a bien un problème de domaine.

    Attention avec $.support.cors, d'après ce que j'ai compris c'est un indicateur, ce n'est pas une valeur qu'on est censé modifier soi-même. Dans mes recherches j'ai également vu à plusieurs reprises un paramètre appelé $.mobile.allowCrossDomainPages (par exemple ici).

    Question : pourquoi utiliser json3.js alors que tu as déjà le support de JSON avec jQuery ?
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Nouveau test
    Bonjour,

    Merci pour votre réponse.
    J'ai fait les modifications suggérées mais l'erreur est toujours présente. J'ai également essayé d'enlever l'appel à json3.js et $.support.cors mais l'erreur persiste.

    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
     
                        $.mobile.allowCrossDomainPages = true;		    
    		    $.support.cors = true;
                        $.ajax(
                        {
                            type:'GET',
                            dataType: 'json',
                            contentType: "application/json; charset=utf-8",
    			headers: { "cache-control": "no-cache" },
    			timeout: 5000,
    			url:'https://xxxxxxx/recuperationInfoUtilisateur',
                            crossDomain:true,
                            cache:false,
                            async:true,  
    			success: function(data)
    			{
                                alert("OK");
    			},
    			error:function(xhr, status, errorThrown) {
                                alert("OK");
    			}
                        });
    J'ai utilisé les librairies JS suivantes
    A noter que le site fonctionne uniquement avec la librairie Jquery (sans JqueryMobile). J'ai intégrer cette librairie pour les besoins de tests.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <script src="https://code.jquery.com/jquery-1.9.1.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/json3/3.2.6/json3.min.js"></script>
    <script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>


    json3.js et $.support.cors sont utilisés notamment pour etre compatible avec IE7. En effet le support JSON de Jquery ne fonctionne pas avec les vielles versions d'IE.

    Je confirme également que le problème est reproductible avec un IOS 7.1 qui support CORS.


    Merci de votre aide

  4. #4
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    C'est au-delà de mes compétences hélas Je n'ai jamais développé pour les machines Apple.

    J'ai trouvé plus d'infos sur $.support.cors
    Citation Envoyé par Pekka
    you don't enable CORS by setting that variable. You just tell jQuery that you're in an environment where Cross-Domain XHR requests are possible.
    Traduction :
    tu n'actives pas CORS en définissant cette variable. Tu dis juste à jQuery que tu es dans un environnement où les requêtes XHR inter-domaines sont possibles.
    Donc cette ligne sert bien à quelque chose
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Erreur (status à 0) jQuery ajax() avec IOS
    Bonjour,

    Apres plusieurs tentatives de corrections le problème persiste/
    Je précise que le serveur est bien contacté et traite bien la requête. Le problème semble donc venir du traitement de la Response par le navigateur Safari.

    Merci de votre aide.

Discussions similaires

  1. jQuery Ajax avec asp.net
    Par paladice dans le forum ASP.NET Ajax
    Réponses: 9
    Dernier message: 15/05/2013, 16h25
  2. jquery ajax avec mvc
    Par mvc_dev dans le forum ASP.NET MVC
    Réponses: 1
    Dernier message: 28/04/2011, 10h06
  3. Réponses: 4
    Dernier message: 10/02/2010, 14h10
  4. Réponses: 26
    Dernier message: 09/07/2009, 09h55
  5. [JQuery] ajax avec Firefox
    Par elvan49 dans le forum jQuery
    Réponses: 2
    Dernier message: 17/12/2007, 12h21

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