2011-10-14 68 views
39

Tôi đang cố gắng lặp lại điều này để nhận giá trị 'tên'. Đây là những gì tôi hiện đang có, nhưng nó không có vẻ là làm việc, đã thử một vài người khác từ những gì đã được đăng ở đây nhưng không có gì dường như làm việc.lặp qua json array jquery

$.get("/get_names", {campaign_id: $('select[name="id"]').val()}, 
       function(data){ 
        $.each(data, function(i, item) { 
         alert(item); 
        }); 
       } 
    ); 

Json được trả lại:

[ 
      { 
       "name":"age" 
      }, 
      { 
       "name":"asdf" 
      }, 
      { 
       "name":"drivername" 
      }, 
      { 
       "name":"drivers" 
      }, 
      { 
       "name":"firstname" 
      }, 
      { 
       "name":"gender" 
      }, 
      { 
       "name":"lastname" 
      }, 
      { 
       "name":"make" 
      }, 
      { 
       "name":"model" 
      }, 
      { 
       "name":"vehicles" 
      }, 
      { 
       "name":"year" 
      } 
     ] 

Tôi đã cố gắng sử dụng:

item.name 
item[i].name 

Bất kỳ lời đề nghị?

Cảm ơn bạn!

+0

thử 'mục [i] [0]' – jackJoe

+0

trả về một dấu ngoặc đơn ',' [' – dzm

+0

có nghĩa là nó không xử lý nó như một mảng ... – jackJoe

Trả lời

111

Bạn cần phải phân tích các chuỗi như JSON (data[0] == "[" là một dấu hiệu cho thấy data thực sự là một chuỗi, không phải là một đối tượng):

data = $.parseJSON(data); 
$.each(data, function(i, item) { 
    alert(item); 
}); 
+2

đó là tôi đã viết dưới đây :) –

+0

Nhưng không phải điều này làm cho tập lệnh async ?? – ruveena

1

Tôi không nghĩ rằng bạn đang trở về đối tượng json từ máy chủ. chỉ là một chuỗi.

bạn cần datatype của đối tượng quay trở lại được json

9

bạn cũng có thể thay đổi từ phương pháp .get() với phương pháp .getJSON(), jQuery sẽ sau đó phân tích chuỗi trả lại như data đến một đối tượng javascript và/hoặc mảng bạn có thể tham chiếu như bất kỳ đối tượng/mảng javascript nào khác.

sử dụng mã của bạn ở trên, nếu bạn thay đổi .get thành .getJSON, bạn sẽ nhận được cảnh báo [object Object] cho từng phần tử trong mảng. Nếu bạn đã thay đổi cảnh báo thành alert(item.name), bạn sẽ nhận được tên.

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