日期:2014-05-20  浏览次数:20457 次

还是AJAX 各位大哥救命!分也没了!
最近我用AJAX.NET来做点东西,以前从没用过AJAX的,可是一用上来,请求服务端返回的DATASET时,却总是返回为空值,以下是我的一段测试代码,返回为空,可是我把DATASet在服务端绑定到DATAGrid中,却是有值的,请问是什么原因?期待高手:
服务端代码:
private   void   Page_Load(object   sender,   System.EventArgs   e)
{
//   在此处放置用户代码以初始化页面
Ajax.Utility.RegisterTypeForAjax(typeof(index));
Ajax.Utility.RegisterTypeForAjax(typeof(DataSet));

}

[Ajax.AjaxMethod()]
public   static   DataSet   GetData(string   s)
{
System.Data.OleDb.OleDbConnection   scn_Conn   =   new     OleDbConnection( "Provider=Microsoft.Jet.OLEDB.4.0;Data   Source= "   +   System.Web.HttpContext.Current.Server.MapPath( "Data/#169ol.aline.mdb "));
System.Data.DataSet   ds_Ajax   =   new   System.Data.DataSet();
scn_Conn.Open();
System.Data.OleDb.OleDbDataAdapter   oda_Ajax   =   new   OleDbDataAdapter( "select   Id   from   movieurl   order   by   Id ",scn_Conn);
oda_Ajax.Fill(ds_Ajax);
return   ds_Ajax;
}
客户端测试代码:
function   getDataSet(){
var   res   =   index.GetData( "sss ",GetData_callback);
//alert(res.Rows.length);
}

function   GetData_callback(response)
{
//var   res   =   .value;
alert(response.value.Tables[0].Name);
}  
客户端调用GetData函数时,总是会出现value.Tables为空,或不是对像,直接用alert输出response.value时显示 "Null "。
其它的数据类型都可以,就DataSet和DataTable不行,高手帮帮忙,小弟分也不多,但有一颗最真诚的感谢之心!!!


------解决方案--------------------
Ajax.Utility.RegisterTypeForAjax(typeof(DataSet));
去掉试试吧。
还有var res = index.GetData( "sss ",GetData_callback);
把前面的var res=也不要。直接index.GetData( "sss ",GetData_callback);

------解决方案--------------------
1、這條語句括號裡的 "index "是你本頁面的Class名稱。
Ajax.Utility.RegisterTypeForAjax(typeof(index));

不明白,你為何有兩條。

2、不要返回DataSet,而是返回DataTable。

3、public static DataSet GetData(string s)

不要用靜態函數,改成:public DataTable GetData(string S)