後端通過 AJAX 返回字符串格式的數組數據:
[['技術評審1','專家2','供應商3','評分4','1'], ['技術評審2','專家2','供應商3','總分4','2'], ...]
前端需解析為 JavaScript 二維數組 var datas = [...]。
原返回格式使用單引號、無鍵名,**不是合法 JSON**,JSON.parse() 會報錯,eval() 雖能執行但**極不安全** (XSS 風險)。
後端 (Java) 構建 List
List
返回合法 JSON:
[
{"categoryName":"技術評審1","professName":"專家2","suppilerName":"供應商3","showName":"評分4","sumScore":1},
{"categoryName":"技術評審2","professName":"專家2","suppilerName":"供應商3","showName":"總分4","sumScore":2}
]
$.post(url, params, function(data) {
// data 已自動解析為 JS 對象數組 (因 Content-Type: application/json)
// 或手動: var json = JSON.parse(data); // 若返回純文本
var arrs = []; // 目標二維數組
for (var i = 0; i < data.length; i++) {
var obj = data[i];
var row = [
obj.categoryName,
obj.professName,
obj.suppilerName,
obj.showName,
obj.sumScore
];
arrs.push(row);
}
// arrs 即為所需格式
console.log(arrs);
}, "json"); // 指定 dataType 為 json,jQuery 自動解析
| 環節 | 錯誤做法 | 正確做法 |
|---|---|---|
| 後端格式 | 拼接類數組字符串 (單引號、無鍵) | 序列化 List |
| 前端解析 | eval() / 手動 split/replace | jQuery dataType:"json" 或 JSON.parse() |
| 安全性 | 極低 (代碼注入風險) | 高 (純數據交換) |
| 可維護性 | 差 (格式耦合、易斷) | 好 (結構化、字段可擴展) |
JSON.stringify/parse、jQuery $.parseJSON (內部調用原生)。**後端返回標準 JSON 對象數組,前端指定 dataType:"json" 自動解析**,再按需轉換為二維數組。拒絕手動拼接字符串、拒絕 eval(),這是前後端分離開發的基本職業素養。