2013-06-25 36 views
5

Dưới đây là HTML của tôi:Nhận đối tượng JSON từ HTML5 đĩa dữ liệu * thuộc tính với JavaScript

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

Dưới đây là JavaScript của tôi cho đến nay:

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

sau đó này cảnh báo:

ALERT: { "method" : "checkbox" } 

Nhưng làm thế nào tôi có thể truy cập vào "phương pháp" JSON? Tôi muốn về cơ bản có thể cảnh báo từ "hộp kiểm". Bất kỳ trợ giúp nào được đánh giá cao.

+0

Data-passwrd hoặc thiết lập dữ liệu? – dandavis

+0

thiết lập, xin lỗi trục trặc đánh dấu. Làm tươi! – Halcyon991

+0

Nếu bạn đang sử dụng jQuery, bạn chỉ có thể nói 'var a = $ ('# mySelector'). Dữ liệu ('setup'); ' –

Trả lời

5

JSON.parse sẽ là cách đơn giản nhất để tạo ra một đối tượng thích hợp từ 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 
} 

Tất nhiên điều này sẽ không làm việc trong các trình duyệt cũ, vì vậy bạn sẽ cần phải Shim nó nếu bạn muốn loại đó hỗ trợ trình duyệt. Douglas Crockford có một shim here, và hoặc khóa học jQuery có một JSON parsing method nếu bạn đã sử dụng tiện ích đó.

+0

Bạn có biết trình duyệt này hoạt động như thế nào không? IE8 có cơ hội nào không? :) – Halcyon991

+0

@ Halcyon21 - phải tìm kiếm nó - vâng - có vẻ như đây là một cái gì đó IE8 * thực sự * hỗ trợ http://blogs.msdn.com/b/ie/archive/2008/09/10/native-json -in-ie8.aspx –

+0

Thật thú vị, là một câu hỏi đầy hy vọng hơn là mong đợi một 'có' - nhưng điều đó thực sự tốt. IE8 có một số phước lành ít nhất ... Cảm ơn sự giúp đỡ, sẽ đánh dấu điều này như đã chọn. – Halcyon991

2

Bạn cần phải sử dụng JSON.parse phương pháp này:

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

này được hỗ trợ trong tất cả các trình duyệt hiện đại và trong IE8 +.

Nếu bạn cần hỗ trợ các trình duyệt cũ hơn, here là ít hack. Xem phần Khả năng tương thích của trình duyệt.

+0

có, bây giờ bạn có thể sử dụng nó như Object:' alert (myJSON.method); 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object – antyrat

Các vấn đề liên quan