0

Ajax を使用して、サーバー側のコード PHP からクライアント側にいくつかのデータをポストバックしています。これがその方法です。

//server side
$json='{
"payout_history":"0",
"round_shares":"1816",
"workers":
  {
    "jbo.5970":
      {
        "alive":"1",
        "hashrate":"1253"
      },
    "jbo.5970cpu":
      {
        "alive":"1",
        "hashrate":"21"
      },
    "jbo.5970-2":
      {
        "alive":"1",
        "hashrate":"1062"
      }
  }
}';
echo json_encode($json);

これは、firebug に基づいて取得している JSON 応答です。

"{\r\n\"payout_history\":\"0\",\r\n\"round_shares\":\"1816\",\r\n\"workers\":\r\n 
 {\r\n    \"jbo.5970\":\r\n      {\r\n        \"alive\":\"1\",\r\n        \"hashrate
\":\"1253\"\r\n      },\r\n    \"jbo.5970cpu\":\r\n      {\r\n        \"alive\":\"1
\",\r\n        \"hashrate\":\"21\"\r\n      },\r\n    \"jbo.5970-2\":\r\n
  {\r\n        \"alive\":\"1\",\r\n        \"hashrate\":\"1062\"\r\n      }\r\n  }\r\n}"

クライアント側では、 $.each 関数を使用して各ワーカーを反復処理し、「jbo.5970」、「alive」、「hashrate」を取得しようとしています。どうすればそれを行うことができますか

これを試しましたが、何も起こりません。デバッガーにエラーはありません

    //client side
   $.ajax({    
    type: "POST",
    url: "display.php",
    data:{faculties:"arts"},            
    dataType: "json",   //expect json to be returned                
    success: function(response){                    
        $.each(response,function(i,item)
        {
            alert(response["workers"]);

        });
    }

});
4

1 に答える 1

2

response.workersは配列であり、 ではありませんresponse

$.each(response.workers,function(i,item)
{
    console.log(item);
});

また、サーバー側には既に json 文字列があるため、エンコードする必要はありません。

echo $json;の代わりに使用しecho json_encode($json);ます。

于 2013-09-10T02:24:36.453 に答える