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 関数が結果プロパティを持つオブジェクト/配列を返すだけですか? 私はここで少し迷っています...誰かが私のためにそれを解決できれば(直接回答するか、適切なドキュメントを使用して)、それは素晴らしいことです. 「dataReceived」を $.each-iterator に渡すだけではコードが機能しないためです。「結果」プロパティ (dataReceived.results) が必要です。

4

1 に答える 1

2

getJSON AJAX リクエストが文字列の配列を返すことになっていることは承知しています (私の使用のために自動的に解析されます)。

完全ではありません。jQuery.getJSON()JSON 応答を同等の JavaScript インスタンスと値に解析します。しかし、それらの値が何であるかは、応答に完全に依存します。

Javascript 配列に「結果」プロパティがあることを知りませんでしたか?

この場合、要求は Parseに対するものであるため、基本的なクエリ応答は、見つけた形式に従います(コメントで修正):

結果の値は、オブジェクトresultsをリストする JSON 配列を持つフィールドを含む JSON オブジェクトです。

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

コールバックでは、このような JSON データを解析して定義された「ルートdataReceivedと等しくなります。Object

于 2014-02-24T22:33:21.253 に答える