2013-08-19 35 views
-2

當我運行下面的代碼時出現此錯誤:SyntaxError:JSON.parse:意外字符 data = JSON.parse(data);如何解決錯誤:JSON.parse:意外字符?

當我運行console.log(data);它說數據是不確定的。

console.log(data); 
data = JSON.parse(data); 

有人知道如何解決錯誤問題嗎?

+2

定義數據.... – xbonez

+0

爲什麼不向我們展示有問題的代碼(要解析的字符串)?很可能你的JSON字符串中有白色或控制字符。 – marekful

+0

我們需要了解您如何初始化數據。 – adamjc

回答

0

其實JSON.parse()方法的語法是JavaScriptObject JSON.parse(String)。 這意味着JSON.parse()方法將一個有效的JSON字符串作爲參數,並返回一個JavascriptObject。如果作爲參數傳遞的字符串不是有效的JSON字符串,則會引發錯誤。 因此,首先您必須將有效的JSON字符串作爲參數傳遞給JSON.parse()方法。

+0

謝謝,但什麼是有效的JSON字符串作爲參數?你能告訴我在正確的方向... –

+0

有效的JSON字符串是什麼,但它是synatactically正確的JSON。通常,JSON數據由JSONObject的「{}」---->和JSONArray的「[]」------->組成。 – Azeez

+0

在JSON對象中,元素應該像... key:值對,例如:{「key1」:「val1」,「key2」:「val2」}在JSON中,元素應該是...... ..........只有值.......例如:[val1,val2,val3] – Azeez

0

數據未定義。這就是爲什麼JSON.parse拋出一個錯誤。因此,請調查「數據」的價值。

0

如果這是確定你對待空/未定義的數據作爲空JSON對象那就試試這個:

var key = $(this).attr("track_id"); 
$("#track_info div[data-role=header] h1").text(key); 
var data = window.localStorage.getItem(key); 

if (data == undefined || data == null || data == "") 
{ 
    data = 'null'; 
} 
else 
{ 
    console.log(data); 
} 

data = JSON.parse(data); 
console.log(data); 

使用data = 'null';我已經創建空的JSON對象,這樣JSON.parse()不會失敗。

+0

如果數據格式不正確或甚至沒有JSON,JSON.parse()仍然會失敗。 – Adrian

+0

@Adrian是的,你是對的。如果OP添加更多信息,我會嘗試相應地更新答案。謝謝。 –

+0

@Azizi謝赫謝謝,但你的代碼不工作... –

0

這可能會幫助:

var key = $(this).attr("track_id"); 
$("#track_info div[data-role=header] h1").text(key); 

var data = window.localStorage.getItem(key); 

console.log(data); /* The output here may indicate the problem */ 
        /* valid JSON should be a string like 
          "{ \"propName\":\"propValue\" , ...}" 
        */ 

try{ 
    data = JSON.parse(data); 
} 
catch(e){ 
    console.log(e); 
} 

但不知道更多關於你的代碼是非常困難,幫助...你使用jQuery? ($(...)也可以被其他庫使用。)

請參閱http://en.wikipedia.org/wiki/JSON以獲取JSON的更多示例以及良好的概述。 另外http://www.json.org/

+0

謝謝,但是當我使用你的代碼時,我得到這個錯誤:TypeError:data [i]。coords is undefined + total_km + = gps_distance(data [i] .coords.latitude,data [i] .coords.longitude,data [i + 1] .coords.latitude,data [i + 1] .coords.longitude); 。數據仍然未定義... –

+0

這看起來不像來自'我的'代碼。在console.log(data)行放置一個斷點並在調試器中檢查數據變量。 – Adrian

+0

正如許多人所說的那樣,要幫助你是很困難的,因爲你沒有解釋你想要做什麼,或者顯示了足夠的代碼和細節來幫助我們。 – Adrian

相關問題