【问题标题】:AJAX call to web services对 Web 服务的 AJAX 调用
【发布时间】:2010-12-08 08:00:48
【问题描述】:

下面msdn上的文章提供了用AJAX调用web服务的ASP.NET AJAX解决方案...http://msdn.microsoft.com/en-us/magazine/cc163499.aspxlike

<asp:ScriptManager ID="_scriptManager" runat="server">
  <Services>
    <asp:ServiceReference Path="StockQuoteService.asmx" />
  </Services>
</asp:ScriptManager>

然后在Jscript中直接使用类名。但是当我将服务上传到其他域并尝试执行相同操作时,它不起作用。有没有办法我可以做到,或者我错过了什么?提前谢谢...

【问题讨论】:

  • 尝试直接浏览到另一个域上的 .asmx。你看到了什么?
  • 工作正常。甚至在正常的服务器调用上也能正常工作。唯一的问题是 AJAX 调用。

标签: javascript web-services asp.net-ajax


【解决方案1】:

由于same origin policy 的限制,这是不可能的。您不能执行跨域 AJAX 调用。一种可能的解决方法是使用JSONP,但您需要有一个支持它的网络服务。

【讨论】:

  • 哦,不明白他在尝试使用远程服务,以为他上传了整个东西.. :-|
【解决方案2】:

如果您能够使用 Jquery,您可能想试一试:

http://jquery-howto.blogspot.com/2009/04/cross-domain-ajax-querying-with-jquery.html

【讨论】:

  • 谢谢。会试试这个。只是想知道;他们如何在 jQuery 中做到这一点?从某种意义上说,如果没有任何服务器端,他们将如何实现它?
  • @mihsathe,他们使用 PHP 在域之间实现服务器端桥接脚本。然后 jquery 简单地对该 PHP 脚本执行一个普通的 AJAX 请求,该脚本将调用委托给远程域。
  • 哎呀没有正确阅读。在这种情况下,它成为显而易见的解决方案。但是为什么我要创建一个 Web 服务而不是在同一个 PHP 页面中实现整个逻辑呢?
  • 因此不需要 jQuery 来应用它。无论如何你都可以做到。
【解决方案3】:

请安装Fiddler2 并监控您的请求/响应,这对解决 ajax 和 Web 服务问题非常有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    • 2013-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多