2015-11-20 41 views
1

我的代码用ajax:jQuery的阿贾克斯[对象的对象] [对象的对象]输出列表

$("#keyword").keyup(function() { 
    var keyword = $("#keyword").val(); 
    if (keyword.length >= MIN_LENGTH) { 
     $.get("./lib/data_siswa_ajax.php", { keyword: keyword, sekolah: $("#sekolah").val()}) 
     .done(function(data) { 
      $('#results').html(''); 
      var results = JSON.parse(data); 
      $(results).each(function(nama, value) { 
       $('#results').append('<div class="item">' + value + '</div>'); 
      }) 

      $('.item').click(function() { 
       var text = $(this).html(); 
       $('#keyword').val(text); 
      }) 

     }); 
    } else { 
     $('#results').html(''); 
    } 
}); 

产出DIV结果:

[object Object] 

[object Object] 

console.log: 

[{"nama":"Sakkel Krista Afrentino"},{"nama":"Abdul Rahman Alfikkry"}] 

帮助我..我该如何解决这个问题?

+0

在这种情况下,'key'是数组中当前项目的索引,'value'是项目本身。所以你只需要从对象中使用属性'nama'而不是对象本身 - >'.append('

' + value.nama + '
')' – Andreas

+0

这是因为你正在获取单个对象,意味着它是嵌套对象。您必须迭代使用每个循环来获取实际值。使用'value.nama'替换值。 –

+0

感谢它的工作:) –

回答

1

你的问题不太清楚,但我想你应该改变:

$('#results').append('<div class="item">' + value + '</div>'); 

要:

$('#results').append('<div class="item">' + value.nama + '</div>'); 

由于值是一个JSON对象,并将其命名为对象的唯一属性。

+1

这不是一个_json object_,而是一个普通的对象。 [JSON](http://json.org)是一种数据交换格式。 – Andreas

1

foreach中,第二个参数是对象集合的单个对象。

如果你想展示你可以使用JSON.strigify(value) JSON字符串,但如果你想获得一个JSON属性或值,您需要导航value JSON例如:

value.name 

它将打印'Sakkel Krista Afrentino'在第一次迭代中,这是对象上第一个位置的内容

+1

谢谢巴勃罗..工作.. :) –

相关问题