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

ThinkPHP AJAX 回應處理:ajaxReturn 與前端 jQuery 整合範例

     編輯:PHP 綜合知識

前言

ThinkPHP (TP) 內建 ajaxReturn() 方法,自動處理 JSON/XML/JSONP/EVAL 格式輸出並設定正確 Header,極大簡化 AJAX 介面開發。

控制器用法

<?php
class ApiController extends Controller {
    public function addComment() {
        $data = I('post.');
        // 驗證...
        $id = M('Comment')->add($data);
        if ($id) {
            $this->ajaxReturn(['status' => 1, 'id' => $id, 'msg' => '發布成功'], 'JSON');
        } else {
            $this->ajaxReturn(['status' => 0, 'msg' => '發布失敗'], 'JSON');
        }
    }
}

支援格式 (第二參數)

格式Content-Type用途
JSONapplication/json現代 API 標準 (預設)
XMLtext/xml舊系統整合
JSONPapplication/javascript跨域舊瀏覽器
EVALtext/html直接回傳 JS 程式碼 (不推薦)

前端 jQuery 整合

<script>
$.post('{:U("Api/addComment")}', {
    content: $('#content').val(),
    article_id: 123
}, function(res) {
    if (res.status === 1) {
        layer.msg(res.msg, {icon: 1});
        $('#comment-list').prepend(renderComment(res.id));
    } else {
        layer.msg(res.msg, {icon: 2});
    }
}, 'json'); // 告訴 jQuery 自動解析 JSON
</script>

進階:統一 API 回應結構

在基礎控制器封裝:

protected function apiReturn($status, $msg = '', $data = [], $code = 200) {
    $this->ajaxReturn([
        'code'   => $code,
        'status' => $status, // 1 成功 0 失敗
        'msg'    => $msg,
        'data'   => $data
    ], 'JSON');
}

// 使用
$this->apiReturn(1, '登入成功', ['token' => $token]);

常見坑與解決

  1. 輸出前有空白/換行:檢查 <?php 前無 BOM、無 echo/var_dump、關閉標籤 ?> 後無內容。
  2. DEBUG 模式干擾:APP_DEBUG=true 會在 JSON 前輸出 Trace,生產環境必須關閉。
  3. 中文亂碼:確保資料庫連線、PHP 檔案、HTTP Header 皆為 UTF-8;ajaxReturn 內部已 json_encode(..., JSON_UNESCAPED_UNICODE) (TP 3.2.3+)。
  4. 跨域:在基礎控制器 _initialize() 加入 header('Access-Control-Allow-Origin: *');。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved