首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过AJAX直接使用Web服务

通过AJAX直接使用Web服务
EN

Stack Overflow用户
提问于 2011-02-18 00:45:41
回答 3查看 2.1K关注 0票数 3

我目前正在开发一个基于Trafikanten API (http://reis.trafikanten.no/topp2009/topp2009ws.asmx)的公共交通系统网站

虽然它是Web服务,但该站点有几个功能。它是在SOAP格式的.NET框架中实现的。但我们需要在客户端语言中使用它的功能,如JavaScript,以便能够在网页中显示信息。有没有人能建议一些简单的方法来应对这种情况?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-18 00:50:09

假设您使用的是LAMP堆栈:

我将使用nusoap (http://sourceforge.net/projects/nusoap/)库编写一个PHP脚本来使用SOAP web服务,并通过AJAX调用将JSON返回给您的JavaScript。

编辑

在.NET中更简单,只需右键单击您的项目,然后选择Add a web service。然后,您可以像访问任何其他对象一样访问web服务的方法。至于在JS中使用它,您可以实现创建一个以JSON格式输出结果的ASP页面,然后使用jQuery使用它,就像使用LAMP堆栈一样。不过,使用ASP的回发功能,您最好让它在JS中做繁重的工作,并在视图后面的代码文件中直接使用web服务。

希望这能有所帮助。

票数 2
EN

Stack Overflow用户

发布于 2011-02-18 02:34:04

如果服务不支持JSONP,它可能不支持ASMX服务,您需要创建一个服务代理来在本地web服务器上运行。然后,使用本地服务作为中介,绕过浏览器的跨域限制。

如果您在ASP.NET项目中添加了对Top2009WS的服务引用,则可以使用类似下面的代码作为GetLines()的服务器端代理,例如:

代码语言:javascript
复制
[WebMethod]
public Line[] GetLines(int ID) {
  var client = new Topp2009WS.Topp2009WSSoapClient();

  client.open();

  return client.GetLines(ID);
}

然后,您可以像这样在客户端通过代理调用:

代码语言:javascript
复制
$.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的更多信息,请参阅此帖子。

票数 1
EN

Stack Overflow用户

发布于 2011-02-18 01:57:09

我用.NET构建了一个“组合服务”或适配器服务,然后调用其他服务。组合服务将与SOAP与.NET服务通信,而您的应用程序将与您的组合服务通信。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5031867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档