0

我有一个 ajax 函数,它从 sql 查询中填充 DataTable 并返回它我的问题是我找不到从 javascript 读取 DataTable 的解决方案,他们有什么特殊的方法可以做到这一点吗?

编码 :

 [WebMethod]
public static DataTable SendOnlineContacts(int ClientID)
{

    string query = " Select fr.FRIEND_ID,cl.USER_NAME,cl.PROFILE_PIC "
                   +" from clients cl inner join friends fr on cl.CLIENT_ID =fr.FRIEND_ID "
                    +"  where fr.CLIENT_ID= "+ ClientID ;
    return  new SQLHelper(SQLHelper.ConnectionStrings.WebSiteConnectionString).getQueryResult(query);
}

SQLHelper(SQLHelper.ConnectionStrings.WebSiteConnectionString).getQueryResult(query) 是我创建的一个类,只是为了简化我的工作,这个函数默认返回一个 DataTable

4

2 回答 2

0

我刚刚找到了解决这个问题的好方法:) 它可能对其他用户有帮助,所以如果 DataTable 返回多行,我会将其作为答案发布,我会将每一行作为字符串读取并放置一个 ';' 在它的末尾,而不是在该行的每一列上,我会放“,”所以我以后可以阅读它们,我将在代码中显示

服务器端 :

[WebMethod]
public static string SendOnlineContacts(int ClientID)
{
    string result="";
string query = " Select fr.FRIEND_ID,cl.USER_NAME,cl.PROFILE_PIC "
               +" from clients cl inner join friends fr on cl.CLIENT_ID =fr.FRIEND_ID "
                +"  where fr.CLIENT_ID= "+ ClientID ;
DataTable Dt= SQLHelper(SQLHelper.ConnectionStrings.WebSiteConnectionString).getQueryResult(query);
 if(Dt.Rows.Count>0)
  {
      for(int i=0;i<Dt.Rows.Count;i++)
    {
        result+=Dt.Rows[i][0]+","+Dt.Rows[i][1]+";" ;
    }
   return result;
   }
}

客户端

 $.ajax({
    type: 'POST',
    url: 'ChatPageTest.aspx/SendOnlineContacts',
    data: '{ClientID:"' + ClientID+ '"}',
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    success: function (data) {
      var Res=data.d.split(';');
       for(i=0;i<Res.length;i++)
       {
          var Fres=Res[i].split(',');

       }
    });
于 2013-03-14T08:48:29.173 回答
0

我建议您使用标准格式在服务器端和客户端之间交换数据。.net 数据表是一个强大而复杂的对象。但是客户端不需要数据表本身,而是客户端需要它的数据。所以我认为重点是:如何将数据从服务器传递到客户端。

如果您管理的数据结构是普通结构,则使用字符串是一个简单的解决方案。但是,如果您想要更大的灵活性和更通用的方法,那么字符串操作可能很容易变成地狱。所以我认为使用结构化格式(例如 JSON)可能是一个更好的解决方案。

最终,您需要将数据呈现给客户端。我通常使用Jayrock将 JSON 格式的数据呈现给客户端。看一看。

实施您的解决方案的步骤可能是:

  1. [服务器端] 实现一个处理程序:从后端检索数据,将它们序列化为 JSON 并公开它们
  2. [客户端] 实现一个调用处理程序、检索数据并在 DOM 中呈现它们的 javascript 客户端(如果您喜欢这个解决方案,可以使用 Jayrock 代理)。
于 2013-03-14T09:21:26.980 回答