2015-05-11 108 views
0

我有這樣的HTML箱:無法解析JSON JavaScript對象

<span>Select depatament</span><span> 
    <select id="department" onchange="EnableSlaveSelectBox(this)" data-slaveelaments='{"a": 1, "b": "2"}'> 
     <option selected disabled>-Select-</option> 
    </select> 
</span> 

事件的onchange()實現:

function EnableSlaveSelectBox(element) { 
    var d = $('#department').data('slaveelaments'); 
    alert($.parseJSON(d)); 
} 

但當的onchange()事件被激發我就在這排:

alert($.parseJSON(d)); 

此錯誤:

SyntaxError:JSON.parse:JSON數據第1行第2列的意外字符 return JSON.parse(data +「」);

任何想法爲什麼我上面的錯誤? 預先感謝您。

回答

1

你的情況,你不需要使用parseJSON,因爲dObject

function EnableSlaveSelectBox(element) { 
    var d = $('#department').data('slaveelaments'); 

    console.log(d.a); 
    console.log(d.b); 
} 

Example

When the data attribute is an object (starts with '{') or array (starts with '[') then jQuery.parseJSON is used to parse the string; it must follow valid JSON syntax including quoted property names. If the value isn't parseable as a JavaScript value, it is left as a string.

$.data

3

因爲,有趣的是,jQuery的似乎自動解析字符串到一個對象。除了

alert(JSON.stringify(d)); // {"a":1,"b":"2"} 

:爲了驗證這一點:

alert(d); // [object Object] 

還是這樣做是爲了再次看到字符串化版本,我不知道的jQuery這樣做,直到我測試了它。

+0

我正要張貼同樣的事情。 。 。你每天學習新的東西。 :)很好的功能jQuery的傢伙! – talemyn

2

jQuery data()已經將格式正確的json轉換爲數組或對象。

這也會在API的文檔

When the data attribute is an object (starts with '{') or array (starts with '[') then jQuery.parseJSON is used to parse the string; it must follow valid JSON syntax including quoted property names. If the value isn't parseable as a JavaScript value, it is left as a string.

data() API DOCS