Вернуть только первые 20 результатов данных JSON, переданных $ .ajax? - PullRequest
3 голосов
/ 23 марта 2012

У меня есть следующий простой фрагмент jquery

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

Результат может возвращать 1000 результатов - я хочу, например, только первые 20. Как мне лучше всего это сделать?

Ответы [ 2 ]

5 голосов
/ 23 марта 2012

Обратный вызов для .each() имеет аргумент index, который является индексом в исходной коллекции.Вы выходите из итерации, возвращая false из обратного вызова.

Таким образом, вы бы сделали что-то вроде:

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

Как прокомментировали другие, лучше сделать это на стороне сервера, но, возможно,у вас нет доступа к коду на стороне сервера?

3 голосов
/ 23 марта 2012

Если вы действительно хотите (или должны) выполнить эту клиентскую сторону, вы можете разорвать цикл $.each, вернув false на определенной итерации.

См. эту скрипку для базового примера того, как это сделать.

В вашем случае это приведет к:

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

Также см. документы :

Мы можем разорвать цикл $ .each () на определенной итерации, сделав функция обратного вызова возвращает false. Возврат non-false - это то же самое, что продолжить оператор в цикле for; он сразу перейдет к следующему итерации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...