我将拔出所有剩余的头发,因此,如果您知道可能是什么问题,请帮助我。谢谢。我所有的谷歌搜索和搜索都没有得到回报。
首先,我正在使用jquery-1.7.2.min.js和ASP.net 2.0 Web表单。
我正在尝试使用jquery进行ajax调用,但始终收到语法错误/解析错误消息。我尝试了许多不同的方法,但是当我将dataType设置为json时,它们都会导致错误。
这是我所拥有的:
$.ajax({ type: "POST", url: "UserList.aspx/GetTestJson", data: {}, //have also tried "{}" and other options such as removing the line contentType: "application/json;charset=utf-8", dataType: "json", success: function(data, textStatus, jqXHR){ alert('success'); }, //Using below instead of above makes no difference either //success: function(data){ // alert('success'); //}, error: function(jqXHR, textStatus, errorThrown){ alert('errorThrown: ' + errorThrown); } });
和aspx页面方法:
[WebMethod] public static string GetTestJson() { return "Hello My World"; }
我也尝试过设置Web服务,但得到的结果相同。似乎返回的响应是该页面的完整html或来自Web服务的xml,并且由于我将dataType设置为json,因此无法成功解析。如果是这种情况, 如何将响应设置为仅返回json?
这是我尝试过没有运气的其他事情:
[WebMethod] public static string GetTestJson() { HttpContext.Current.Response.ContentType = "application/json"; string json = JavaScriptConvert.SerializeObject("Hello My World"); return json; }
我通过jQuery得到的错误消息:
errorThrown.message = "Syntax error" errorThrown.number = -2146827286 errorThrown.name = "SyntaxError" textStatus = "parseerror" jqXHR.status = 200 jqXHR.statusText = "OK" jqXHR.readyState = 4 jqXHR.responseText = (the complete html of the page)
有什么想法或建议吗?
谢谢
感谢@DaveWard和@CodeRoller为您带来的帮助,导致了此解决方案:
我的jQuery ajax调用和WebMethod仍然与原始帖子相同。
我的web.config已被修改如下:
<system.web> <compilation debug="true"> <assemblies> <!-- A bunch of other assemblies here--> <add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add assembly="System.Web.Extensions.Design, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> </assemblies> </compilation> <httpModules> <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> </httpModules> </system.web>
我希望其他人会觉得有用。