json_encode + ajaxReturn先自行組裝陣列並編碼,再指定類型為 JSON。
$arr = array(
'name' => $picname,
'pic' => $pics,
'size' => $size
);
$this->ajaxReturn(json_encode($arr), 'JSON');
前端需自行解析:
var d = eval('(' + d + ')'); // 字串轉物件
alert(d.pic);
ThinkPHP 內建會對陣列執行 json_encode,前端直接取得物件。
$arr['name'] = $picname;
$arr['pic'] = $pics;
$arr['size'] = $size;
$this->ajaxReturn($arr, 'JSON');
前端簡化為:
alert(d.pic); // d 已是 JSON 物件
| 維度 | 方法一 | 方法二(推薦) |
|---|---|---|
| 程式碼量 | 需手動 json_encode | 框架自動處理 |
| 前端處理 | 需 eval 或 JSON.parse | 直接使用物件 |
| 安全性 | eval 有 XSS 風險 | 無額外風險 |
| 可維護性 | 易忘記編碼步驟 | 統一規範,不易出錯 |
$.ajax 設定 dataType: 'json',jQuery 自動解析,拒絕 eval。{code: 200, msg: '', data: {…}},便於統一錯誤處理。