【问题标题】:Call a webservice(.asmx) from another website/webapp using javascript使用 javascript 从另一个网站/webapp 调用 webservice(.asmx)
【发布时间】:2013-05-13 12:37:47
【问题描述】:

我正在尝试使用 javascript 调用 webservice(.asmx) 文件。这是我正在尝试做的详细说明。

我有两个 WebApplication 项目,一个包含 WebService.asmx 文件,另一个包含 javascript 文件。我正在尝试从 javascript 文件中调用位于 WebService.asmx 中的方法 HelloWorld()。

注意:我试图在不使用 jQuery 的情况下做到这一点。

请给出详细解释(代码和一些文档),我查看了许多示例并尝试了许多不同的方法,但都对我不起作用。

这是我尝试过的事情的清单:

  • 在 .asmx 文件中添加了 [ScriptService]。
  • 添加了对包含 .asmx 的项目的 Web 引用。
  • 添加了对包含 .asmx 的项目的服务引用。
  • 在我的脚本管理器中将 EnablePageMethods 属性设置为 true。
  • 将以下代码添加到我的脚本管理器中。

    <Services>
       <asp:ServiceReference Path="http://localhost..." />
    </Services>
    

【问题讨论】:

  • 您看到了什么错误?您的问题是服务没有返回数据,还是您的 javascript 没有调用服务?
  • 好吧,上次我试过了(我最接近它的工作),我已经像 AppNamespace.Webservice.HelloWorld(callback,fail) 这样运行了javascript方法,它总是跳转到fail方法说HelloWorld失败了。
  • 您应该使用fiddler 查看您遇到了什么错误。服务运行正常吗?您可以直接从 Visual Studio 运行您的服务(确保该服务应用程序也是您的启动应用程序)。将打开一个内置的服务测试页面,以便您可以直接针对该服务进行测试。首先确保它按您期望的那样工作,然后开始使用您自己的 javascript 访问它
  • 我已经知道如何使用 web 服务,并且我已经使用来自代码隐藏的 web 服务做了一个小测试,它工作得很好,当我开始弄乱 Javascript 时它变得很棘手

标签: javascript asp.net web-applications asmx


【解决方案1】:

由于您的问题缺少一些细节,我建议您检查以下内容:

  1. Web 服务未托管在您的 Web 应用程序所在的单独域中
  2. 在 HTTP 请求标头中,您传递了正确的 Content-Type 以及预期的 Contect-Type
  3. 您的服务器返回的内容类型与您的 javascript 预期的内容类型相同。
  4. 如果您使用 Microsoft 的客户端 AJAX 库,请确保您在客户端使用正确的序列化器/反序列化器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多