2015-10-15 67 views
2

我在線閱讀了意外令牌問題可能來自使用JSON.parse()未捕獲的語法錯誤:json中的意外令牌u

我收到此錯誤Uncaught SyntaxError: Unexpected token u

我做錯了嗎?

我的代碼看起來象

var t=null; 
var xmlhttp=new XMLHttpRequest(); 
xmlhttp.onreadystatechange=function(responseText) 
{ 
    if (xmlhttp.readyState == 4 &&xmlhttp.status==200) 
    var obj = JSON.parse(xmlhttp.responseText); 
    var str=JSON.stringify(obj); 
    var newArr = JSON.parse(str); 
    var len=newArr.length; 
    $.mobile.pageContainer.pagecontainer("change","sales_home.html"); 
    $(document).on('pageshow', "#temp", function (event, data) { 
     while (len > 0) { 

      len--; 
     } 
    }); 
} 
xmlhttp.onerror=function(E) 
{ 
    alert("error"+ E); 
} 
xmlhttp.open("GET","url",true); 
xmlhttp.send(); 

回答

2

,如果你堅持正確縮進代碼的問題變得很明顯:

var t = null; 
var xmlhttp = new XMLHttpRequest(); 
xmlhttp.onreadystatechange = function(responseText) { 
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) 
     var obj = JSON.parse(xmlhttp.responseText); 
    var str = JSON.stringify(obj);      // <==== 
    var newArr = JSON.parse(str);      // <==== 
    var len = newArr.length; 
    $.mobile.pageContainer.pagecontainer("change", "sales_home.html"); 
    $(document).on('pageshow', "#temp", function(event, data) { 
     while (len > 0) { 

      len--; 
     } 
    }); 
} 
xmlhttp.onerror = function(E) { 
    alert("error" + E); 
} 
xmlhttp.open("GET", "url", true); 
xmlhttp.send(); 

注意代碼是如何做

var str = JSON.stringify(obj); 
var newArr = JSON.parse(str); 

沒有重要的是什麼值readyStatestatus AR e。這會導致錯誤,因爲obj將爲undefined,所以JSON.stringify(obj)將返回undefined,因此JSON.parse將強制爲字符串"undefined",然後它無法解析,在第一個字符u上失敗。

你可能要添加一個塊:

var t = null; 
var xmlhttp = new XMLHttpRequest(); 
xmlhttp.onreadystatechange = function(responseText) { 
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { // Block starts here 
     var obj = JSON.parse(xmlhttp.responseText); 
     var str = JSON.stringify(obj); 
     var newArr = JSON.parse(str); 
     var len = newArr.length; 
     $.mobile.pageContainer.pagecontainer("change", "sales_home.html"); 
     $(document).on('pageshow', "#temp", function(event, data) { 
      while (len > 0) { 

       len--; 
      } 
     }); 
    }              // Block ends here 
} 
xmlhttp.onerror = function(E) { 
    alert("error" + E); 
} 
xmlhttp.open("GET", "url", true); 
xmlhttp.send(); 

不太以下你爲什麼解析,然後字符串化,然後再解析雖然......或者爲什麼你有一個空while循環。 ..

相關問題