CI 框架下,JS $.post() 發送數據,控制器方法:
echo → AJAX success 回調觸發,返回空字符串。echo "ok" → AJAX error 回調觸發,返回 HTTP 200 但解析失敗。CI 的 Output 類在輸出時會檢測 ob_get_level(),若開發環境開啟錯誤報告,任何 Notice/Warning 都會被輸出到響應體,導致 JSON 格式破壞。典型場景:
Notice: Undefined variable: x in ...\nok"
?>
JS 期望 JSON,收到 HTML 混雜文本 → JSON.parse 拋錯 → 進入 error 回調。
php.ini 設 display_errors = Off,或代碼開頭 error_reporting(0);(生產環境必須)。public function api_method() {
$this->output
->set_content_type('application/json')
->set_output(json_encode(['status' => true, 'data' => $result]));
}
$this->output->set_output(),確保無額外輸出。var_dump、print_r、空白字符輸出。error: function(xhr){ console.log(xhr.responseText); } 打印原始響應定位雜質。