2009-08-05 30 views
6

Bản phân tích đầu tiên của tôi về làm việc với dữ liệu JSON. Tôi có một chút kinh nghiệm sử dụng jQuery mặc dù.jQuery - phân tích cú pháp dữ liệu JSON - Gặp sự cố với tên biến số

Tôi gửi bài đến URL này (tumblr api): jyoseph.com/api/read/json

đầu ra Những gì tôi đang cố gắng làm là json đó được trả lại. Những gì tôi có cho đến nay:

$(document).ready(function(){ 

$.getJSON("http://jyoseph.com/api/read/json?callback=?", 
    function(data) { 
    //console.log(data); 
    console.log(data.posts);   

     $.each(data.posts, function(i,posts){ 
     var id = this.id; 
     var type = this.type; 
     var date = this.date; 
     var url = this.url; 
     var photo500 = this.photo-url-500; 

     $('ul').append('<li> ' +id+ ' - ' +type+ ' - ' +date+ ' - ' +url+ ' - ' +photo500+ ' - ' + ' </li>'); 
     }); 

    }); 

}); 

Xem bài jsbin tôi cho toàn bộ kịch bản: http://jsbin.com/utaju/edit

Một số trong những chìa khóa từ tumblr có "-" dấu gạch nối trong họ, và điều đó dường như gây ra một vấn đề. Như bạn có thể thấy "ảnh-url-500" hoặc "chú thích ảnh" khác khiến đoạn mã bị vỡ, nó xuất ra NaN.

Có vấn đề gì với việc có dấu gạch ngang trong các tên chính không? Hoặc tôi đang đi về điều này tất cả các sai?

Trả lời

19

Nếu có dấu gạch ngang trong các tên bạn sẽ cần truy cập chúng khác nhau. Thay đổi var photo500 = this.photo-url-500; để đọc var photo500 = this["photo-url-500"];.

+1

Hoạt động hoàn hảo, cảm ơn bạn nhiều! – jyoseph

1

Sử dụng bracket notation để truy cập các thành viên:

var photo500 = this['photo-url-500']; 
+0

Cảm ơn bạn đã liên kết, rất hữu ích, hãy xem qua nó ngay bây giờ. – jyoseph

2

Xin lưu ý tốt nhất là không để gắn bên trong mỗi lần lặp. Tốt hơn để nối thêm vào một chuỗi hoặc đẩy vào một mảng sau đó nối thêm một lần sau khi trình vòng lặp đã kết thúc. Phụ thêm vào mái nhà đắt tiền.

+0

Vì vậy, tôi nên xây dựng một chuỗi với mỗi lần lặp và sau đó xuất chuỗi cuối cùng? Đó là lời khuyên vững chắc, tôi không nghĩ về điều đó. Cảm ơn! – jyoseph

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