在最后一行之后停止jQuery JSON数组循环

时间:2013-01-25 17:17:48

标签: javascript jquery ajax json

我正在检索JSON数组并将结果显示为项长的列表。但是,如果找到的结果少于十个,那么它会再次与第一行重叠。

我的代码:

$.ajax({
    url: 'http://www.entertainmentcocktail.com/cp/index.php?area=bn2',
    dataType: 'jsonp',
    jsonp: 'jsoncallback',
    timeout: 5000,
    success: function(data, status){

        var n = 0;

        while(n<10){            
        $.each(data, function(i,item){
            var places = item.name +
            ' where you can get' +
            ' a pint of <em>'+item.pint+'</em> for only ' +
            '<span>£'+item.cost+'!</span>';
            $('#placeList').append('<li id="listitem">'+ places +'</li>');
            n++;
        });
        }
    }
});

如何让代码显示前十行 OR 收到的所有行,具体取决于哪些更少?

2 个答案:

答案 0 :(得分:4)

这就是你所需要的:

success: function(data, status){    
    $.each(data, function(i,item){
        var places = item.name +
        ' where you can get' +
        ' a pint of <em>'+item.pint+'</em> for only ' +
        '<span>£'+item.cost+'!</span>';
        if (i < 10) {
            $('#placeList').append('<li id="listitem">'+ places +'</li>');
        }
    });
}

答案 1 :(得分:1)

您不需要while

$.each(data, function(i,item){
  if(i >= 10) return;

  var places = item.name +
    ' where you can get' +
    ' a pint of <em>'+item.pint+'</em> for only ' +
    '<span>£'+item.cost+'!</span>';
    $('#placeList').append('<li id="listitem">'+ places);
});

(可能有更聪明的方法来做你想做的事情,但这是你的代码的快速修复)