使用jquery 的ajax调用总是错误亲测的解决方法

  使用jquery 的ajax功能调用一个页面,却发现总是出现错误。

  js代码如下

  

复制代码 代码如下:

  $.ajax({

  type: 'post',

  url: 'TestData.aspx',

  data: {

  language_type: 'cn'},

  dataType: 'json',

  success: function (data) {

  alert('ok');

  },

  error: function (data) {

  alert('err');

  });

  }

  TestData.aspx代码如下,省略了后边一些代码

  

复制代码 代码如下:

  <%@ Page Language="C#" AutoEventWireup="true" CodeFile="TestData.aspx.cs" Inherits="Demand_TestData" %>

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  TestData.aspx.cs代码如下

  

复制代码 代码如下:

  public partial class Demand_TestData : System.Web.UI.Page

  {

  protected void Page_Load(object sender, EventArgs e)

  {

  List<TestC> t=new List<TestC> ();

  for (int i = 0; i < 10; i++)

  {

  TestC c = new TestC();

  c.RD_ID = i;

  t.Add(c);

  }

  string test = JsonConvert.SerializeObject(t);

  Response.ContentType = "application/Json";

  Response.Write(test);

  Response.Clear();

  }

  }

  public class TestC

  {

  public int RD_ID

  }

  可就是这么短短几行代码,jquery总是报错,如果把 dataType: 'json', 修改为其他类型就不会错了,很奇怪,可我的系统里,需要的是'json对象

  最后经过反复测试才发现修改了如下地方的代码后终于正常了

  1去掉TestData.aspx.cs页面中的Response.Clear();具体什么原因不清楚

  2修改类TestC为如下形式,也就是给字段添加了读取设置属性

  

复制代码 代码如下:

  public class TestC

  {

  private int rD_ID;

  public int RD_ID

  {

  get { return rD_ID; }

  set { rD_ID = value; }

  }

  }

  3删除TestData.aspx页面中的所有代码,只保留第一行,修改后的代码如下

  

复制代码 代码如下:

  <%@ Page Language="C#" AutoEventWireup="true" CodeFile="TestData.aspx.cs" Inherits="Demand_TestData" %>

  经过这么多测试终于正常了

  我发现使用jquery的ajax的经常回跳入错误的处理流程,尤其是 dataType: 'json',看来jquery有很严格的验证机制,看来这个一定要注意,否则就会错误