我从ajax获取json数据并认为我已接近完成此操作,但由于某些原因我的UL不能填充,我无法找到任何调试信息帮助
有人能指出我正确的方向吗?
json data :
{"data":[{"racer_id":73,"racing_nbr":"4","entry_id":131},
{"racer_id":9,"racing_nbr":"48","entry_id":132},
{"racer_id":525,"racing_nbr":"7","entry_id":133},
{"racer_id":534,"racing_nbr":"11","entry_id":134},
{"racer_id":213,"racing_nbr":"72","entry_id":135},
{"racer_id":574,"racing_nbr":"66f","entry_id":136}]}
$('.list-group-item').click(function() {
var data = 'class_id='+ $(this).attr('rel') + '&event_id=' +<?php echo $_GET['event_id']; ?>
// POST to server using $.post or $.ajax
$.ajax({
data: data,
type: 'GET',
dataType: 'JSON',
url: 'php/builder/getRidersScoringHeats.php',
success: function(data) {
var obj = data, // get entry object (array) from JSON data
ul = $("#sortable"); // create a new ul element
// iterate over the array and build the list
for (var i = 0, l = obj.length; i < l; ++i) {
ul.append("<li class='ui-state-default' id='item-" + obj[i].entry_id + "'>" + obj[i].racing_nbr + " - " + obj[i].racer_id + "</li>");
}
$("#sortable").append(ul); // add the list to the DOM
}
});
});
非常感谢任何帮助。
提前致谢。
答案 0 :(得分:3)
在您的情况下,data
实际上包含一个名为data
的对象,它是objects
的数组集合。
这样做很容易:
$.each(data.data, function(i, info){
ul.append("<li class='ui-state-default' id='item-" + info.entry_id + "'>" + info.racing_nbr + " - " + info.racer_id + "</li>");
});
答案 1 :(得分:2)
如果data
是分配给obj
的对象,那么您的问题是obj.length
无法解析为任何值。对象没有length
属性。您需要将数据放在顶层的数组中,或者使用像underscore.js这样的库来实现这一目的。
或者,请参阅此答案:Length of a JavaScript object