我有一个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
答案 0 :(得分: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(',');
}
});
答案 1 :(得分:0)
我建议您使用标准格式在服务器端和客户端之间交换数据。 .net数据表是一个功能强大且复杂的对象。但客户端本身并不需要数据表,而是客户端需要其数据。 所以我认为重点是:如何将数据从服务器传递到客户端。
如果您管理的数据结构是普通结构,则使用字符串是一个简单的解决方案。但是,如果你想要更多的灵活性和更通用的方法,字符串操作可能很容易成为一个地狱。 所以我认为使用结构化格式(例如JSON)可能是更好的解决方案。
最终,您需要向客户端提供数据。我通常使用Jayrock以JSON格式向客户端呈现数据。看看。
实施解决方案的步骤可能是: