Je veux appeler un webservice depuis jQuery. Comment puis je faire ça?
Vous pouvez faire une demande AJAX comme toutes les autres demandes:
$.ajax( {
type:'Get',
url:'http://mysite.com/mywebservice',
success:function(data) {
alert(data);
}
})
MODIFIER:
L'OP ne cherchait pas à utiliser les demandes interdomaines, mais jQuery prend en charge JSONP à partir de la version 1.5. Voir jQuery.ajax () , plus précisément le paramètre crossDomain
.
Les requêtes jQuery Ajax régulières ne fonctionneront pas entre les sites, donc si vous souhaitez interroger un service Web RESTful distant, vous devrez probablement créer un proxy sur votre serveur et le demander avec une requête get jQuery. Voir ce site pour un exemple.
S'il s'agit d'un service Web SOAP, vous pouvez essayer le plugin jqSOAPClient .
J'ai blogué sur la façon de consommer un service WCF en utilisant jQuery:
http://yoavniran.wordpress.com/2009/08/02/creating-a-webservice-proxy-with-jquery/
La publication montre comment créer un proxy de service directement en javascript.
Au cas où les gens auraient un problème comme moi suite à la réponse de Marwan Aouida ... le code a une petite faute de frappe. Au lieu de "succès", il dit "succès" changez l'orthographe et le code fonctionne bien.
En Java, cette valeur de retour échoue avec jQuery Ajax GET:
return Response.status(200).entity(pojoObj).build();
Mais cela fonctionne:
ResponseBuilder rb = Response.status(200).entity(pojoObj);
return rb.header("Access-Control-Allow-Origin", "*").build();
----
Classe complète:
@Path("/password")
public class PasswordStorage {
@GET
@Produces({ MediaType.APPLICATION_JSON })
public Response getRole() {
Contact pojoObj= new Contact();
pojoObj.setRole("manager");
ResponseBuilder rb = Response.status(200).entity(pojoObj);
return rb.header("Access-Control-Allow-Origin", "*").build();
//Fails jQuery: return Response.status(200).entity(pojoObj).build();
}
}