0

我有一个通过 AJAX 请求从服务器获取数据的函数。异步回调获取数据,然后将其显示到 DOM。

我知道 getJSON AJAX 请求应该返回一个字符串数组(并且会自动解析以供我使用)。因此,我想获取该字符串数组并使用 jQuery 的 $.each 方法循环遍历它们,该方法接受 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 数组上有一个“结果”属性?或者仅仅是 getJSON 函数返回一个具有 results 属性的对象/数组?我在这里有点迷失了......如果有人可以为我解决这个问题(无论是通过直接回答还是通过适当的文档),那就太好了。因为如果我只是将 'dataReceived' 传递给 $.each-iterator,代码将不起作用。它需要“结果”属性(dataReceived.results)。

4

1 回答 1

2

我知道 getJSON AJAX 请求应该返回一个字符串数组(并且会自动解析以供我使用)。

不是完全。jQuery.getJSON()将 JSON 响应解析为等效的 JavaScript 实例和值。但是,这些值是什么完全取决于响应。

我不知道 Javascript 数组上有一个“结果”属性?

在这种情况下,由于请求是 Parse,所以他们的基本查询响应遵循您找到的格式用评论修改):

结果值是一个 JSON 对象,其中包含一个results带有列出对象的 JSON 数组的字段。

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

在回调中,dataReceived将等于解析此类 JSON 数据定义的“” 。Object

于 2014-02-24T22:33:21.253 回答