使用Web服务通过AJAX直接
我目前正在开发基于Trafikanten API上的Web站点的公共交通系统(http://reis.trafikanten.no/topp2009/topp2009ws.asmx)使用Web服务通过AJAX直接
该网站有几个功能,虽然它的网络服务。它使用SOAP格式在.NET框架中实现。但是我们需要在JavaScript等客户端语言中使用它的功能,以便能够在网页中显示信息。任何人都可以提出一些简单的方法来应对这种情况?
只要你正在使用LAMP堆栈:
我会使用的NuSOAP(http://sourceforge.net/projects/nusoap/)libarary写一个PHP脚本消耗SOAP的Web服务和返回JSON通过AJAX调用到您的JavaScript。
编辑
它甚至在.NET容易。只需右键单击您的项目并选择添加Web服务。然后,您可以像访问其他任何对象一样访问Web服务的方法。至于在JS中使用它,你可以实现创建一个ASP页面,以JSON格式输出结果,然后像使用LAMP堆栈一样使用jQuery。尽管使用ASP的后期功能,但最好让它在JS中完成繁重的工作,并在视图后面的代码文件中直接使用Web服务。
希望有所帮助。
我已经在过去做过,因为Jesse说的是.NET。我构建了一个“组合服务”或适配器服务,然后调用其他服务。组合的服务将与SOAP服务进行通信,而您的应用程序会将JSON与您的组合服务进行通信。
如果该服务不支持JSONP(它可能不是ASMX服务),则需要创建服务代理以在本地Web服务器上运行。然后,使用该本地服务充当中介,避免浏览器的跨域限制。
如果您在ASP.NET项目中添加一个服务引用Top2009WS,这样的事情可能充当GetLines)例如服务器端代理(:
[WebMethod]
public Line[] GetLines(int ID) {
var client = new Topp2009WS.Topp2009WSSoapClient();
client.open();
return client.GetLines(ID);
}
然后,您可以通过调用代理这样的客户端:
$.ajax({
url: 'Service.asmx/GetLines',
type: 'POST',
dataType: 'json',
contentType: 'application/json',
data: '{"ID":' + 12345 + '}',
success: function(response) {
// Alerts the first result's "LineName"
alert(response.d[0].LineName);
}
});
看到这个职位的详细信息,using jQuery to call the web service。
Jesse,Thanx您的建议,但我不能使用该库,因为我们的网站不是基于PHP的,它基于ASP。任何其他选择...? Thanx提前 -neo – Neo182 2011-02-17 19:08:11
@ Neo182 - 请参阅我的编辑。 – 2011-02-18 20:30:38