使用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服务。

希望有所帮助。

+0

Jesse,Thanx您的建议,但我不能使用该库,因为我们的网站不是基于PHP的,它基于ASP。任何其他选择...? Thanx提前 -neo – Neo182 2011-02-17 19:08:11

+0

@ Neo182 - 请参阅我的编辑。 – 2011-02-18 20:30:38

我已经在过去做过,因为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