c# – jquery ajax与asp.net无法正常工作

前端之家收集整理的这篇文章主要介绍了c# – jquery ajax与asp.net无法正常工作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我准备把剩下的头发拉出来,所以如果你知道问题可能会帮助我…谢谢.
我所有的谷歌搜索搜索都没有得到回报.

首先,我使用的是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,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的帮助,这导致了这个解决方案:

>安装ASP.NET Ajax扩展(HERE)
>添加对System.Web.Extensions.dll的引用
>修改web.config以包含ScriptModule httpModule(见下文)

我的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,PublicKeyToken=31BF3856AD364E35"/>
      </assemblies>
    </compilation>
    <httpModules>
      <add name="ScriptModule" type="System.Web.Handlers.ScriptModule,System.Web.Extensions,PublicKeyToken=31bf3856ad364e35"/>
    </httpModules>
  </system.web>

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

猜你在找的C#相关文章