首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

ThinkPHP AJAX 回傳 JSON 的兩種實作差異解析

     編輯:PHP 綜合知識

方法一:手動 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: {…}},便於統一錯誤處理。
  • API 版本控制與簽名驗證請在基類或中介層實作。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved