0

サービスから JSON 応答を取得しています。チュートリアルに従って、datatables jquery プラグインでデータをバインドするための応答を作成しました。

クライアント側コード:

var test_reports = jsonResp.reports;
var aDataSet = [test_reports];

$('#example').dataTable( {
    "aaData": aDataSet,
    "aoColumns": [{ "sTitle": "Tests" },
          { "sTitle": "Reports"}]
});

コンソールでは、私の「test_reports」は次のように表示されます。

['TEST_1','1'] ['TEST_2','1']

ただし、このデータをテーブルにバインドしている間、エラーがスローされます。この cosole の出力を aaData にコピーすると、テーブルが作成されます。私の「test_reports」は文字列であり、このプラグインは値の配列を期待していることを理解しました。この作品を作るための任意のアイデア!!

このjson応答を返すサーバー側コード:

testcasesCountRS = statement.executeQuery(testcasesQuery);

            while(testcasesCountRS.next()){
                String test_name = testcasesCountRS.getString("test_name");
                String test_count = testcasesCountRS.getString("test_count");
                testResults.put(test_name, test_count);
                resBuffer.append("[\'" + test_name + "\',\'" + test_count + "\'],");
            }

resBuffer = resBuffer.deleteCharAt(resBuffer.lastIndexOf(","));

reports.put("reports", resBuffer);

サーバー側のコードに、応答を配列オブジェクトとして datatables プラグインに送信する代替手段はありますか?

4

2 に答える 2

0

私はそれを次のように動作させました:

JSONArray testCaseArray = new JSONArray();
while(testcasesCountRS.next()){
                JSONArray testCase = new JSONArray();
                String test_name = testcasesCountRS.getString("test_name");
                String test_count = testcasesCountRS.getString("test_count");

                testCase.add(test_name);
                testCase.add(test_count);
                testCaseArray.add(testCase);
}

reports.put("reports", testCaseArray);

私を悩ませている唯一のことは、ループのたびに新しい配列を作成する必要がある非常に愚かなコードです。これらの配列をメインの Array オブジェクトに追加します。簡単にするために、いくつかの回避策が必要です。効率の良い方法論を教えてください。

于 2013-10-01T17:53:37.040 に答える
0

サーバーの応答は、配列の配列である必要があります。

[['TEST_1','1'],['TEST_2','1']]

コードを次のように変更します

resBuffer.append("[");
while(testcasesCountRS.next()){
    String test_name = testcasesCountRS.getString("test_name");
    String test_count = testcasesCountRS.getString("test_count");
    testResults.put(test_name, test_count);
    resBuffer.append("[\'" + test_name + "\',\'" + test_count + "\'],");
}
resBuffer = resBuffer.deleteCharAt(resBuffer.lastIndexOf(","));
resBuffer.append("]");

上記のコードはテストされていません。しかし、あなたがその考えを理解してくれることを願っています.

ドキュメント リンク

于 2013-10-01T06:37:55.370 に答える