【发布时间】:2009-05-14 06:09:12
【问题描述】:
我想从 jQuery 调用 web 服务。我该怎么做?
【问题讨论】:
-
跟 Stack Overflow 问题有点关系How to use jQuery to call an ASP.NET web service?。
-
我建议关闭这个问题,如果我在下面发布的链接中回答得足够好
标签: jquery web-services
我想从 jQuery 调用 web 服务。我该怎么做?
【问题讨论】:
标签: jquery web-services
您可以像任何其他请求一样发出 AJAX 请求:
$.ajax( {
type:'Get',
url:'http://mysite.com/mywebservice',
success:function(data) {
alert(data);
}
})
【讨论】:
编辑:
OP 不打算使用跨域请求,但 jQuery 从 v1.5 开始支持 JSONP。参见jQuery.ajax(),具体是crossDomain 参数。
常规的 jQuery Ajax 请求不能跨站点工作,因此如果您想查询远程 RESTful Web 服务,您可能必须在您的服务器上创建一个代理并使用 jQuery get 请求进行查询.示例见this site。
如果是 SOAP Web 服务,您可能想试试jqSOAPClient plugin。
【讨论】:
我写了一篇关于如何使用 jQuery 使用 WCF 服务的博客:
http://yoavniran.wordpress.com/2009/08/02/creating-a-webservice-proxy-with-jquery/
这篇文章展示了如何直接在 javascript 中创建服务代理。
【讨论】:
以防人们在遵循 Marwan Aouida 的回答后遇到像我这样的问题......代码有一个小错字。而不是“成功”它说“成功”改变拼写和代码工作正常。
【讨论】:
在 Java 中,此返回值因 jQuery Ajax GET 失败:
return Response.status(200).entity(pojoObj).build();
但这有效:
ResponseBuilder rb = Response.status(200).entity(pojoObj);
return rb.header("Access-Control-Allow-Origin", "*").build();
----
全班:
@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();
}
}
【讨论】: