48 votes

appel jQuery ajax au service REST

Je suis en train de faire un appel ajax de jquery pour un service rest. Le reste du service est utilisé à droite à partir d'un tutoriel de mkyong du blog, celui-ci: http://www.mkyong.com/webservices/jax-rs/integrate-jackson-with-resteasy/

Le service fonctionne, mais lorsque je tente de faire un appel de jQuery, dans Firebug il y a un code d'état 200, mais dans la section réponse, rien.

Voici la page html avec l'appel ajax:

<html>
<head>
    <script type="text/javascript" src="jquery-1.6.2.min.js"></script>
</head>

<body>  

<button id="ajax">ajax call</button>
<button id="json">json</button>

<script type="text/javascript">
    $('#json').click(function(){ 
        alert('json');
         $.getJSON("http://localhost:8080/restws/json/product/get",
         function(data) {
            alert(data);         
          });   
    });

    $('#ajax').click(function(){ 
        alert('ajax');
         $.ajax({ 
             type: "GET",
             dataType: "json",
             url: "http://localhost:8080/restws/json/product/get",
             success: function(data){        
                alert(data);
             }
         });
    });

</script>



</body>

</html>

Je ne peux pas la comprendre où je suis allé mal, pourriez-vous s'il vous plaît dites-moi ce que je fais de mal?

Merci!

78voto

Rocket Hazmat Points 87407

Vous exécutez votre code HTML à partir d'une autre machine que la machine que vous demandez. De ce fait, vous êtes bloqué par la même la politique de l'origine.

Une façon de contourner cela est d'utiliser JSONP. Cela permet à la croix-des demandes de site.

En JSON, vous sont retournés:

{a: 5, b: 6}

En JSONP, le JSON est enveloppé dans un appel de fonction, de sorte qu'il devient un script, et non un objet.

callback({a: 5, b: 6})

Vous avez besoin de modifier votre service REST pour accepter le paramètre callback, puis d'utiliser la valeur de ce paramètre comme le nom de la fonction. Vous devez également modifier l' content-type de application/javascript.

Par exemple: http://localhost:8080/restws/json/product/get?callback=process doivent de sortie:

process({a: 5, b: 6})

Dans votre code JavaScript, vous devrez dire à jQuery pour utiliser JSONP. Pour ce faire, vous devez ajouter ?callback=? de l'URL.

$.getJSON("http://localhost:8080/restws/json/product/get?callback=?",
   function(data) {
     alert(data);         
   });

Si vous utilisez $.ajax, il sera automatiquement ajouter l' ?callback=? si vous dites à utiliser jsonp.

$.ajax({ 
   type: "GET",
   dataType: "jsonp",
   url: "http://localhost:8080/restws/json/product/get",
   success: function(data){        
     alert(data);
   }
});

-4voto

Amit Points 76

Je pense qu'il n'y a pas besoin de préciser

 'http://localhost:8080`" 
 

dans la partie URI .. parce que. si vous le spécifiez, vous devrez le modifier manuellement pour chaque environnement.

Seulement

 "/restws/json/product/get" also works
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X