C# asp.net不工作的jquery ajax

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",

我将要拔出我剩下的头发,所以如果你知道问题可能是什么,请帮我拔出来。。。谢谢 我所有的谷歌搜索也没有得到回报

首先,我使用jquery-1.7.2.min.js和ASP.NET2.0Web表单

我正在尝试使用jquery进行ajax调用,但不断得到语法错误/解析错误消息。我尝试了许多不同的方法,但是当我将数据类型设置为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,因为我将数据类型设置为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为您提供的帮助,导致了此解决方案:

  • 安装ASP.NET Ajax扩展()
  • 添加对System.Web.Extensions.dll的引用
  • 修改web.config以包含ScriptModule httpModule(见下文)
  • 我的jqueryajax调用和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>
    
    
    

    我希望其他人会觉得这很有用。

    您应该在
    页面加载函数中调用一个函数

    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应用程序!谢谢@如果我能给你上千张选票,你就要装腔作势了@苏拉辛格,非常欢迎你。我很高兴这个职位能帮助别人。我在这个问题上也发疯了…=)非常感谢你!我的头撞在墙上好几个小时了。。。