解決方法 Uncaught SyntaxError: Unexpected token < in JSON at position 0
win7 作業系統 php5.4和phpstorm8.3 (php整合開發環境,可以編輯除錯)開發遇到問題
$(function(){
var g_table = $("table.data");
var init_data_url = "data.php?action=init_data_list";
$.get(init_data_url,function(data){
var row_items = $.parseJSON(data); //報錯如下
for( var i = 0 , j = row_items.length ; i < j ; i++) {
var data_dom = create_row(row_items[i]);
g_table.append(data_dom);
}
});
報錯:
Uncaught SyntaxError: Unexpected token < in JSON at position 0
(翻譯:不能捕獲的語法錯誤:json資料位置0處發現不能識別的標記<)
at Function.parse [as parseJSON] (<anonymous>)at Object.success (course.js:5)
at fire (jquery-3.1.1.js:3305)
at Object.fireWith [as resolveWith] (jquery-3.1.1.js:3435)
at done (jquery-3.1.1.js:9242)
at XMLHttpRequest.<anonymous> (jquery-3.1.1.js:9484)
原因:json格式錯誤
返回資料 語句用echo json_encode($data,true);但是用了echo json_decode($data);
由於函式使用不對,返回的data不是json資料,第一個字元是“ <”,所以報錯Unexpected token < in JSON at position 0(翻譯:json資料位置0處發現不能識別的標記<)。
json樣例如下:
{ "employees": [ { "firstName":"Bill" , "lastName":"Gates" }, { "firstName":"George" , "lastName":"Bush" }, { "firstName":"Thomas" , "lastName":"Carter" } ] }
解決辦法:
修改為echo json_encode($data,true);
如果不是該問題,請檢查php檔案給返回的data資料,是否標準json格式。如果php檔案中有var_dump、echo、註釋等,都會對返回的json資料有影響。
一般報該錯誤,基本是資料json格式問題,請在瀏覽器裡面除錯檢查。