C# asp.net不工作的jquery ajax
我将要拔出我剩下的头发,所以如果你知道问题可能是什么,请帮我拔出来。。。谢谢 我所有的谷歌搜索也没有得到回报 首先,我使用jquery-1.7.2.min.js和ASP.NET2.0Web表单 我正在尝试使用jquery进行ajax调用,但不断得到语法错误/解析错误消息。我尝试了许多不同的方法,但是当我将数据类型设置为json时,它们都会导致错误 以下是我所拥有的:C# asp.net不工作的jquery ajax,c#,jquery,asp.net,ajax,c#-2.0,C#,Jquery,Asp.net,Ajax,C# 2.0,我将要拔出我剩下的头发,所以如果你知道问题可能是什么,请帮我拔出来。。。谢谢 我所有的谷歌搜索也没有得到回报 首先,我使用jquery-1.7.2.min.js和ASP.NET2.0Web表单 我正在尝试使用jquery进行ajax调用,但不断得到语法错误/解析错误消息。我尝试了许多不同的方法,但是当我将数据类型设置为json时,它们都会导致错误 以下是我所拥有的: $.ajax({ type: "POST", url: "UserList.aspx/GetTestJson",
$.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,因为我将数据类型设置为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为您提供的帮助,导致了此解决方案:
<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>
我希望其他人会觉得这很有用。您应该在
页面加载函数中调用一个函数
If(!Page.IsPostback){
...
}
仅仅设置内容类型HTTP头实际上并不会神奇地改变响应的内容。您需要自己将数据转换为JSON。另外,[WebMethod]通常用于SOAP服务,而不是RESTful风格的web服务。这部分是正确的,PageMethods专门用于AJAX场景,默认情况下,他们会将响应类型设置为json。您使用的ASP.NET版本是什么?@Rob:听起来您没有安装ASP.NET Ajax扩展,或者您的web.config没有更新以利用这些新功能(包括您尝试在此处使用的静态“页面方法”功能)。我已经写了一些关于如何在这里设置的内容:嗨@Rob。试试我刚刚写的这个例子。正如Dave刚才提到的,测试代码需要正确配置web.config,请检查此处的代码(带有工作的web.config):您的帖子帮助我将json发送到我的ASP.NET 2.0 web应用程序!谢谢@如果我能给你上千张选票,你就要装腔作势了@苏拉辛格,非常欢迎你。我很高兴这个职位能帮助别人。我在这个问题上也发疯了…=)非常感谢你!我的头撞在墙上好几个小时了。。。