使用 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.responseText
和alert(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 从 JavaScript 调用 WCF/JSON/REST WebService