2013-06-25 133 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