Имеет ли массив, возвращенный из запроса 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.