只返回$ .ajax传递的JSON数据的前20个结果?

时间:2012-03-23 09:29:07

标签: json jquery for-loop

我有以下简单的jquery片段

        $(document).ready(function () {
        $.ajax({
             url:"myjson.json",
             dataType: 'json',
             success:function(json){
                 $.each(json, function() {
                    alert("test");
                });
             },
             error:function(){
             },
        });
    });

结果可以返回1000的结果 - 我只想要前20个例子。我最好怎么做?

2 个答案:

答案 0 :(得分:5)

.each()的回调有一个参数index,它是原始集合中的索引。您可以通过从回调中返回false来突破迭代。

所以你会做类似的事情:

$.each(json, function(index) {
    if(index < 20)
      alert("test");
    else
       return false;
});

正如其他人所评论的那样,最好是这个服务器端,但是你可能无法访问服务器端代码?

答案 1 :(得分:3)

如果您真的想(或必须)执行此客户端,您可以通过在特定迭代时返回$.each来中断false循环。

有关如何执行此操作的基本示例,请参阅 this fiddle

在你的情况下会导致:

success:function(json){
                 $.each(json, function(index) {
                    alert("test");
                    if (index === 19){return false}
                });
             }

另见 the docs

  

我们可以在特定的迭代中打破$ .each()循环   回调函数返回false。返回非假是与a相同   在for循环中继续声明;它将立即跳到下一个   迭代。