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



我有以下简单的jquery片段

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

结果可以返回1000个结果——例如,我只想要前20个。我该如何最好地做到这一点?

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

所以你会做一些类似的事情:

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

正如其他人所评论的那样,最好在服务器端这样做,但也许你无法访问服务器端代码?

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

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

在您的情况下,这将导致:

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

另请参阅文档

我们可以通过使回调函数返回false。返回非false与for循环中的continue语句;它将立即跳到下一个迭代。

最新更新