1. 程式人生 > >解決方法 Uncaught SyntaxError: Unexpected token < in JSON at position 0

解決方法 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格式問題,請在瀏覽器裡面除錯檢查。