Имеет ли массив, возвращенный из запроса AJAX с сервера (закодированный и проанализированный JSON), свойство 'results'?

У меня есть функция, которая выбирает данные с сервера через запрос AJAX. Асинхронный обратный вызов принимает данные и затем отображает их в DOM.

Мне известно, что запрос getJSON AJAX должен возвращать массив строк (и автоматически анализируется для моего использования). Поэтому я хочу взять этот массив строк и пролистать их, используя метод $.each jQuery, который принимает 2 аргумента - коллекцию и функцию, которая работает с каждым элементом в коллекции.

Вот соответствующий код:

setInterval(function () {
            $.getJSON("https://api.parse.com/1/classes/chats")
            .done(function(dataReceived){  
                $('.messages li').remove();
                $.each(dataReceived.results, function (index, value) {
                    $('.messages').append('<li>' + value.text + '</li>')
                })    
            });
        }, 2500);

Мой вопрос касается массива, который возвращается из запроса getJSON - в моей функции это параметр с именем dataReceived...

Это массив строк, которые уже были проанализированы, так что он готов для Javascript, верно?

Кроме того, и это главная суть моего вопроса - я не знал, что в массиве Javascript есть свойство "results"? Или только функция getJSON возвращает объект / массив, который имеет свойство результатов? Я немного растерялся здесь... Если бы кто-нибудь мог прояснить это для меня (будь то прямой ответ или с соответствующей документацией), это было бы здорово. Потому что код не работает, если я просто передаю dataReceived в $.each-iterator. Требуется свойство "results" (dataReceived.results).

1 ответ

Решение

Мне известно, что запрос getJSON AJAX должен возвращать массив строк (и автоматически анализируется для моего использования).

Не совсем. jQuery.getJSON() проанализирует ответ JSON в эквивалентных экземплярах и значениях JavaScript. Но то, что эти ценности, полностью зависит от ответа.

Я не знал, что в массиве Javascript есть свойство 'results'?

В этом случае, поскольку запрос состоит в разборе, их базовые ответы на запросы соответствуют формату, который вы находите (дополненный комментариями):

Результатом является объект JSON, который содержит results поле с массивом JSON, в котором перечислены объекты.

{               // root object
  "results": [  // array of results
    {           // individual result object
      // ...
    },
    {           // another result object
      // ...
    }
  ]
}

В обратном вызове dataReceived будет равен "корню" Object определяется путем анализа таких данных JSON.

Другие вопросы по тегам