JS調試中常見的報錯問題

2017-05-31 1150 1 編輯:深圳網站建設 來源:互聯網

報錯:Uncaught SyntaxError: Unexpected token o in JSON at position 1

at JSON.parse (<anonymous>)

at Function.m.parseJSON (jquery.js:8515)

at Object.success (crud.html:45)

at j (jquery.js:3143)

at Object.fireWith [as resolveWith] (jquery.js:3255)

at x (jquery.js:9309)

at XMLHttpRequest.b (jquery.js:9713)

(翻譯:不能捕獲的語法錯誤:json數據位置0處發現不能識別的標記<)

原因:json格式錯誤

返回數據 語句用echo json_encode($data,true);但是用了echo json_decode($data);

由于函數使用不對,返回的data不是json數據,第一個字符是“ <”,所以報錯Unexpected token < in JSON at position 0(翻譯:json數據位置0處發現不能識別的標記<); 

如果使用 $.ajax({})而不是 $.get() 區別: 當使用 $.ajax 時,php返回的 JSON字符串已經被 ajax 中的屬性 dataType 將請求的參數類型要求為String類型(dataType:'json')返回為 JSON對象,不需要再次轉換;當使用 $.get 時,服務器返回的數據格式為原始的字符串數組,因此,需要將返回的字符串轉換為數組,使用 JSON.parse(jsonString) ,將JSON字符串解析為JSON對象;

json教程見:http://www.w3school.com.cn/json/index.asp

解決辦法:

修改為echo json_encode($data,true);

將php的代碼調試代碼 echo()去掉,就不會再報這樣的錯誤了:

 $json = json_encode(array(       "resultCode"=>200,       "message"=>"查詢成功!",       "data"=>$data     ),JSON_UNESCAPED_UNICODE);    //注釋掉     /*echo($json);*/ 

如果使用 $.ajax 時,不需要注釋

//不需要注釋 echo($json); 

如果不是該問題,請檢查php文件給返回的data數據,是否標準json格式。如果php文件中有var_dump、echo、注釋等,都會對返回的json數據有影響。

專業的網站建設公司,深正互聯,如您有網站營銷需求,請您關注我們,或者致電13828884598

本站文章均為深正網站建設摘自權威資料,書籍,或網絡原創文章,如有版權糾紛或者違規問題,請即刻聯系我們刪除,我們歡迎您分享,引用和轉載,但謝絕直接搬磚和抄襲!感謝...
關注深正互聯
七星彩头尾