0

JQuery の php スクリプトを介して送信された JSON 配列の結果を繰り返し処理しようとしています。現在、私がやりたいのは配列の長さを出力することだけですが、それだけでは機能しないので、ここに何かが欠けていると思います。

私の現在のhtml/JQueryは次のとおりです。

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.5.js"></script>
<script>
$(document).ready(function(){
 $("button").click(function(){
  $.getJSON("./getFile.php?fileName=ni", function(json){
     alert("test");
     alert(json.length);
  });
 });
});
</script>
</head>
<body>

<div id="div1"><h2>Test script</h2></div>
<button>Get External Content</button>

</body>
</html>

出くわす JSON 文字列は次のとおりです。

[{"where":"up\n","time":"15:37:33"},{"where":"up\n","time":"15:39:34"},{"where":"up\n","time":"15:41:36"},{"where":"down\n","time":"15:43:37"}]

これは、php で多次元配列に対して json_encode を実行することによって生成されます。

アップデート:

2 つのアラートが発生することを期待していますが、そうではありません。テストも配列の長さも表示されません...

私のPHPコードは次のとおりです。

<?php

$myFile = $_GET['filename'];

$file = fopen($myFile, "r");
$$response = "[ ";

$data = array();
$json = array();
while (!feof($file))
{
   $row = array();
   $currentLine = fgets($file);
   $parts = explode(" ", $currentLine);
   $length = sizeof($parts);
      $time = $parts[0];
      $where = $parts[$length-1];
   $json['where'] = $where;
   $json['time'] = $time;   
   $data[] = $json;
}

echo json_encode($data);
?>
4

2 に答える 2

0

あなたのjsonは配列ではありません!したがって、長さのプロパティはありません。データを変更する必要があります...これは機能するはずです。

$(document).ready(function(){
    $("button").click(function(e){

        // prevent default behaviour if needed
        e.preventDefault();

        $.getJSON("./getFile.php?fileName=ni", function(json){

            var arr = [];
            jQuery(json).each(function(index){            
                count = arr.push(this)
            });

            alert("test");
            alert(count);
        });

    });
});

@see http://jsfiddle.net/SA5G8/ </ p>

于 2012-12-14T15:30:59.357 に答える
0

jQuery.each()を使用してアイテムを反復処理します。

$.each(items, function(index, value) {
    console.log(index +": " + value.where);
});
于 2012-12-14T15:09:41.337 に答える