我从我的服务中获得了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插件。
答案 0 :(得分: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("]");
以上代码未经测试。但希望你能得到这个想法。
答案 1 :(得分: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对象中。应该有一些工作来简化它。请提出一些有效的方法。