使用 JSON 从 AJAX 和 JQuery 调用简单的 Web 服务(.asmx 文件) - 解析错误

Posted

技术标签:

【中文标题】使用 JSON 从 AJAX 和 JQuery 调用简单的 Web 服务(.asmx 文件) - 解析错误【英文标题】:Calling simple web service (.asmx file) from AJAX and JQuery using JSON - parse error 【发布时间】:2011-04-08 17:04:29 【问题描述】:

迈出尝试将所有这些技术一起使用的第一步..我遇到了一些问题.. 这是我的服务器端:

[WebMethod(EnableSession = true)] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 公共字符串最简单的方法() return "返回的最简单方法";

这是我的客户端:

 $(document).ready(function()
   $("a").click(函数(事件)
      $.ajax(
      类型:“发布”,
      url: "http://localhost:53346/d2/TAPI.asmx/simplestMethod",
      数据: ””,
      contentType: "应用程序/json; charset=utf-8",
      数据类型:“json”,
      成功:函数(数据)
       警报(数据.d);
      ,
      错误:函数(XMLHttpRequest,textStatus,errorThrown)
       alert("发生错误!" +" | " + XMLHttpRequest +" | " + textStatus +" | " +
       错误抛出);
      
   );
  );
 );

结果是一个警报,上面写着: 发生了错误! | [对象 XMLHttpRequest] |解析错误 |不明确的。 什么解析失败,为什么? 我应该提一下,直接调用 WS 方法确实有效。 非常感谢!

【问题讨论】:

网页的网址是什么?如果它从不同的主机和/或端口运行,您将不会得到响应,因为它将被相同的源策略阻止。 【参考方案1】:

当你想在 jquery 中使用 WebMethod 时,你必须在 web.config 中添加这个标签

<configuration>
  <system.web>
    <httpModules>
      <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    </httpModules>
  </system.web>
</configuration>

祝你好运

【讨论】:

【参考方案2】:

您的代码看起来不错,有一个可疑的地方:url。您应该将url 替换为"TAPI.asmx/simplestMethod""/d2/TAPI.asmx/simplestMethod"

此外,如果您想研究如何使用参数调用 Web 方法或从 Web 方法返回更复杂的数据,请查看 How do I build a JSON object to send to an AJAX WebService? 和 asmx web service, json, javascript/jquery?、Can I return JSON from an .asmx Web Service if the ContentType is not JSON?。如何从 Web 方法内部的异常中解码错误消息,请参阅Get xhr object in vb.net while ajax calling fails。

【讨论】:

不走运。更改 URL 会产生相同的错误,当我更改错误和成功函数时,我只会收到一条显示“错误”的警报。不过谢谢! @Oren A:你有 textStatus=**parseerror**。所以你应该首先显示xhr.responseTextalert(xhr.responseText); @Oren A:顺便说一句,我测试了你的代码。如果工作没有任何问题。因此,您的 real 错误位于您在问题中发布的代码之外。 我一直在阅读.. 难道我应该在 web.config 中添加一些东西? (我使用的是 .NET 4.0)代码中还有哪些其他地方是相关的?谢谢。 @Oren A:为了让您轻松地将您的解决方案与一个工作进行比较,我在 .NET 4.0 (Visual Studio 2010) 中创建了一个简单的应用程序,它的功能与您在问题中描述的相同。您可以从ok-soft-gmbh.com/For***/SimpleWebService.zip下载完整代码

以上是关于使用 JSON 从 AJAX 和 JQuery 调用简单的 Web 服务(.asmx 文件) - 解析错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 jQuery 从 AJAX 响应(json)构建表行

使用 jQuery/AJAX 从 JSON 数据中过滤带有复选框的结果

使用 jQuery/Ajax 从 JavaScript 调用 WCF/JSON/REST WebService

无法从 JQuery ajax 调用接收 JSON

使用 jQuery 从 .NET 服务获取 JSON 数据:与 ajax 设置混淆

使用jquery ajax从url加载json文件的问题