最近在使用jquery的$.ajax向后端請求json數據時,遇到了一個奇怪的問題:在console里看到后端確實有返回json數據,但是$.ajax的回調函數中卻收到了一個undefined的結果,實際上就是沒有數據。
這種情況很讓人費解,調試了好久才找到解決辦法,分享一下,希望能夠幫到其他遇到同樣問題的人。
$.ajax({ url: '/api/getData', type: 'get', dataType: 'json', success: function(data){ console.log(data); //這里輸出的結果是undefined } });
解決辦法是在后端返回json數據的時候,確保返回的數據類型為application/json,而不是text/html。也就是說,需要設置響應頭Content-Type的值為application/json。
public function getData() { $data = array('name'=>'david','age'=>18); $jsonData = json_encode($data); //設置響應頭Content-Type的值為application/json header('Content-Type:application/json; charset=utf-8'); echo $jsonData; }
上面的php代碼中,先將數組$data轉為json格式,然后設置響應頭的類型為application/json,最后輸出json數據。