【 tulaoshi.com - Web开发 】
                             
                            使用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) 
{ 
ListTestC t=new ListTestC (); 
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有很严格的验证机制,看来这个一定要注意,否则就会错误