首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

js调用后盾方法返回dataset

2012-10-17 
js调用后台方法返回dataset后台方法:C# code[AjaxMethod]public DataSet GetData(string UserName){DataSe

js调用后台方法返回dataset
后台方法:

C# code
        [AjaxMethod]        public DataSet GetData(string UserName)        {            DataSet ds = new DataSet();            DataTable users= Search.ByUsername(UserName);            ds.Tables.Add(users);            return ds;            }

JS调用:
JScript code
         function showinfo() {              var username =$.trim($("#txtUsername").val());             UserManage.UserEdit.GetData(username, function (r) {                 $("#seluser").empty();                 var ds = r.value;                 if (ds.Tables[0].Rows.length > 0){                     $("#Dialoge").show();                     var Select = $("#seluser");//id为seluser的select控件                     for (var i = 0; i < r.value.Tables[0].Rows.length; i++) {                         var opt = new Option(ds.Tables[0].Rows[i]["UserName"] , ds.Tables[0].Rows[i]["age"]);                         Select [0].options.add(opt);                     }                 }                 else { $("#Dialoge").hide(); }             });         }

前台调用:
C# code
<input id="txtUsername"  runat="server" onkeyup="showinfo()" />

 
在输入框里输入文字,有时会出现这样的问题:
Uncaught TypeError:Cannot read property 'Tables' of null
我查了好久,也不知道是为什么?希望能得到好心人的帮助~~

[解决办法]
在keyup事件中执行ajaxpro方法好像快了一点,应该是动态页没处理好并发导致出错,而你代码没有判断是否出错,而直接使用Tables导致出错了。

增加错误检查
JScript code
        function showinfo() {              var username =$.trim($("#txtUsername").val());             UserManage.UserEdit.GetData(username, function (r) {if(r.error){alert('动态页出错\n'+r.error.message);return false;}/////////                 $("#seluser").empty();                 var ds = r.value;                 if (ds.Tables[0].Rows.length > 0){                     $("#Dialoge").show();                     var Select = $("#seluser");//id为seluser的select控件                     for (var i = 0; i < r.value.Tables[0].Rows.length; i++) {                         var opt = new Option(ds.Tables[0].Rows[i]["UserName"] , ds.Tables[0].Rows[i]["age"]);                         Select [0].options.add(opt);                     }                 }                 else { $("#Dialoge").hide(); }             });         } 

热点排行