0

これが私のクライアント側のコードです

<!DOCTYPE html>
 <html lang="en">
 <head>
   <meta charset="utf-8">
   <title>Alerter</title>
 </head>
 <body>
   <script src="jquery.min.js"></script>
   <script src="http://www.example.com:8001/socket.io/socket.io.js"></script>
   <script>
     $(document).ready(function(){

       var socket = io.connect('http://www.example.com:8001');
       socket.on('message', function (data) { do_message(data) });
     });

   function do_message(data){
     var $obj=$(jQuery.parseJSON(data));
     //now what goes in here? 
   };
</script>
</body>
</html>

そして私が受け取るjavascriptオブジェクトは次のようになります

{
    "root": {
        "status": [
            "OK"
        ],
        "alert": [
            {
                "$": { "src": "web" },
                "time": [ "1349316382" ],
                "id": [ "user1" ]
            },
            {
                "$": { "src": "web" },
                "time": [ "1349316391" ],
                "id": [ "user2" ]
            },
        ]
    }
}

そして、私がやりたいのは、各「アラート」エントリを繰り返し処理し、適切なアクションを実行することです(実際のスキーマは、上記で示したものよりも少し複雑です)。

jQueryセレクターはこのタスクに適したツールですか、それともネイティブjavascript(つまり、getElementsByTagNameなど)に戻る必要がありますか。すべてのjQueryドキュメントは、DOMから有効なhtmlタグを選択することに基づいていますが、受信したメッセージから任意のタグを選択する方法がわかりません。

4

3 に答える 3

1

jQuery の $.each を試して、オブジェクトを反復処理できます。これを試してください

console.log('status is : ' + data.root.status[0]);

     $.each(data.root.alert , function(i, value){
          console.log ('Dollar is : ' + value["$"]["src"]);
           console.log ('Time is : ' + value["time"][0]); 
           console.log ('ID is : ' + value["id"][0]); 
     });

フィドル

于 2012-10-04T04:34:16.360 に答える
0

次を使用してデータを反復処理できます$.forEach

var obj = jQuery.parseJSON(data);

$.each(obj['root']['alert'], function(index, value) {
    console.log(value.id);
});

または、通常の JS を使用することもできます。

var obj = jQuery.parseJSON(data);
var alerts = obj['root']['alert'];

for (var key in alerts) {
    var value = alerts[key];

    console.log(value.id);
});
于 2012-10-04T04:29:30.200 に答える
0

jQuery セレクターは、プレーンな JavaScript オブジェクトでは使用できません。

http://api.jquery.com/jQuery/

プレーン オブジェクト
の操作 現在、jQuery にラップされたプレーン JavaScript オブジェクトでサポートされている操作は、.data()、.prop()、.bind()、.unbind()、.trigger()、および .triggerHandler() のみです。

jQuery.each() または単純な JavaScript ループで繰り返す必要があります。

于 2012-10-04T04:32:39.243 に答える