2013-06-25 180 views
5

屬性這裏是我的HTML:獲取JSON對象數據 - *用JavaScript

<input type="text" data-setup='{ "method" : "checkbox" }'> 

這裏是我的JavaScript至今:

var a = document.querySelectorAll('[data-setup]') 
for (var i=0;i<a.length;i++) { 
    alert(a[i].getAttribute('data-setup')); 
} 

這則提醒:

ALERT: { "method" : "checkbox" } 

但我如何訪問JSON「方法」?我希望能夠提醒單詞「複選框」。任何幫助讚賞。

+0

數據密碼或數據設置? – dandavis

+0

設置,對不起標記故障。刷新! – Halcyon991

+0

如果你正在使用jQuery,你可以說 'var a = $('#mySelector')。data('setup');' –

回答

5

JSON.parse將來自JSON創建一個合適的對象最簡單的方法:

for (var i=0;i<a.length;i++) { 
    var obj = JSON.parse(a[i].getAttribute('data-psswrd')); 
    alert(obj.method); //will alert what was in the method property 
    console.log(obj); // should log a proper object 
} 

當然這不會在舊的瀏覽器,所以你需要,如果你想的那種對墊片它的瀏覽器支持。道格拉斯克羅克福德有一個墊片here,或者當然jQuery有一個JSON parsing method如果您已經使用該實用程序。

+0

你知道哪些瀏覽器可以工作嗎? IE8有什麼機會? :) – Halcyon991

+0

@ Halcyon21 - 必須查找它 - 是啊 - 看起來這是IE8實際上*不支持* http://blogs.msdn.com/b/ie/archive/2008/09/10/native-json -in-ie8.aspx –

+0

這很有趣,是一個更有希望的問題,而不是期待一個'是' - 但這真的很好。 IE8至少有一些祝福...感謝您的幫助,將其標記爲已選。 – Halcyon991

2

您需要使用JSON.parse方法是:

var myJSON = JSON.parse(a[i].getAttribute('data-psswrd')); 
alert(myJSON); 

這在所有現代瀏覽器,並在IE8 +支持。

如果你需要支持舊瀏覽器here是小黑客。請參閱瀏覽器兼容性部分。

+0

是的,現在你可以像Object一樣使用它:'alert(myJSON.method );'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object – antyrat