Partage
  • Partager sur Facebook
  • Partager sur Twitter

[JQuery]Probmème avec .getJSON en cross domain

    16 décembre 2011 à 20:46:26

    Bonsoir,

    J'ai tourné en rond toute la journée sur ce problème et je n'ai toujours pas réussit à le résoudre...

    Je veux récupérer via .getJSON côté client, le résultat (encodé en json) côté serveur.

    Ce que je tiens à souligner, c'est que ça fonctionne en locale, mais lorsque je tente d'effectuer la même manipulation sur mon serveur (copié/collé de mon fichier "api.php", et j'ai testé sur 2 serveurs différents), je ne reçois plus rien côté client.

    J'ai lu ce passage:
    "Due to browser security restrictions, most "Ajax" requests are subject to the same origin policy; the request can not successfully retrieve data from a different domain, subdomain, or protocol.
    Script and JSONP requests are not subject to the same origin policy restrictions."

    sur le site de JQuery et je me demande si le problème ne vient pas de là, bref, assez parlé, voici le code:

    Côté serveur:
    <?php
        echo json_encode(array("nbRes" => 5));
    ?>
    


    Côté client
    <script type="text/javascript">
                            alert('DEBUT !');
                             $.getJSON("http://monsite.com/api.php",
                                            function(data)
                                            {
                                                    alert('MATCH !');
                                                    alert(data.nbRes);
                                            });
                            alert('FIN !');
                    </script>
    


    Ce code va sortir les alertes "DEBUT !" et "FIN !" mais n'entrera pas dans la fonction, alors qu'en local, tout se passera bien.

    Je commence à désespérer... Merci de votre aide !^^
    • Partager sur Facebook
    • Partager sur Twitter
      16 décembre 2011 à 21:24:18

      Tu fais une requête ajax sur un autre domaine que le tien ce qui est interdit, ça s'appelle le cross-domain.
      • Partager sur Facebook
      • Partager sur Twitter
        16 décembre 2011 à 21:32:16

        Ok merci pour ta réponse !

        En réalité je développe une petite API, les requêtes AJAX vont être faites vers mon serveur, comment faire cela ?

        Quand je rajoute un "jsoncallback" de cette manière:

        <script type="text/javascript">
                                alert('DEBUT !');
                                 $.getJSON("http://monsite.com/api.php?jsoncallback=?",
                                                function(data)
                                                {
                                                        alert('MATCH !');
                                                        alert(data.nbRes);
                                                });
                                alert('FIN !');
                        </script>
        


        J'entre toujours pas dans ma fonction mais je vois sur firebug que je reçois le paquet en JSON dans ma console réseau.

        Merci !
        • Partager sur Facebook
        • Partager sur Twitter
          16 décembre 2011 à 22:25:24

          Merci beaucoup pour ce lien ! J'ai d'ailleurs vu que le jsoncallback permets également de faire du cross-domain via JQuery seulement je n'arrive pas à utiliser .getJSON() à la place de tout le traitement javascript (par contre j'ai fait un test et effectivement ça fonctionne !)

          Côté serveur:


          <?php
                  header("Access-Control-Allow-Origin: *");
          ?>
          
          <?php
                 echo json_encode(array("nbRes" => 5));
          ?>
          


          Côté client:
          <script type="text/javascript">
                                  alert('DEBUT !');
                                   $.getJSON("http://monsite.com/api.php?jsoncallback=?",
                                                  function(data)
                                                  {
                                                          alert('MATCH !');
                                                          alert(data.nbRes);
                                                  });
                                  alert('FIN');
                          </script>
          


          J'ai bien le retour dans la console firebug mais pas dans mon .getJSON().

          Merci !
          • Partager sur Facebook
          • Partager sur Twitter

          [JQuery]Probmème avec .getJSON en cross domain

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown