2016/01/11

PHP JSON Content Type

目前大家網路交換格式大多用 json,前幾天踩到一個雷,送出需求到一個網頁以後,該頁面會將 html 的內容回吐,格式像是:

{
 "status": "done",
 "html": "<ul><li><a href=\"#\">link</a></li></ul>"
}

但當 conosole.log() 的時候內容被截斷了,出現可能只有 link</a></li> 之類的,原因很簡單,我的 output PHP 沒有給 content type,所以造成 request 頁面雖然可以解析 json format,但其實是 jQuery 硬做掉的,平時還是不要偷懶,記得要 output 什麼內容就加上該對應的 content type 吧。

// PHP
header('Content-Type: application/json; charset=utf-8');

// CodeIgniter
$this->output->set_content_type('application/json')->set_output(json_encode(compact('result')));

// Laravel 5+
use Illuminate\Http\Response;

return response(compact('result'), $status)->header('Content-Type', 'application/json');

// Or

return response()->json(compact('result'));

沒有留言: