0

SQLクエリからDataTableを埋めて返すajax関数があります。私の問題は、そのDataTableをjavascriptから読み取るための解決策が見つからないということです。

コード :

 [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

サーバー側とクライアント側の間でデータを交換するには、標準形式を使用することをお勧めします。.netデータテーブルは強力で複雑なオブジェクトです。ただし、クライアントはデータテーブル自体を必要とせず、クライアントはそのデータを必要とします。つまり、重要なのは、サーバーからクライアントにデータを渡す方法だと思います。

管理するデータ構造が単純な構造である場合、文字列の操作は簡単な解決策です。ただし、より柔軟性があり、より一般的なアプローチが必要な場合は、文字列操作が簡単に地獄になる可能性があります。したがって、構造化された形式(JSONなど)を使用する方が良い解決策になると思います。

最終的には、クライアントにデータを提示する必要があります。私は通常、Jayrockを使用してデータをJSON形式でクライアントに提示します。見てください。

ソリューションを実装する手順は次のとおりです。

  1. [サーバー側]次のようなハンドラーを実装します。バックエンドからデータを取得し、JSONにシリアル化して公開します。
  2. [クライアント側]ハンドラーを呼び出し、データを取得してDOMにレンダリングするjavascriptクライアント(このソリューションが好きな場合はJayrockプロキシ)を実装します。
于 2013-03-14T09:21:26.980 に答える
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 に答える