如何解析(和访问)对象数组

时间:2017-05-21 16:51:11

标签: javascript php arrays json object

我想解析并打印一个由PHP通过GET请求传递给JavaScript的对象数组成的JSON,我尝试了#34;标准方法"但我的代码不起作用(但使用简单的JSON)

PHP:

>

JavaScript的:

ob_start();
for ($i=0; $i<count($id); $i++){
    $array[]=new Field($id[$i], $en[$i], $it[$i]);
}
print_r($array); // IT WORKS PROPERLY

ob_end_clean();
header('Content-Type: application/json');
echo json_encode($array);

这是一个关于如何通过echo打印JSON的例子:

$.get("../GetFieldsForLanguage.php", function(data, status){
var str = JSON.stringify(data);
console.log(str);
var form = JSON.parse(str);
var count = Object.keys(data).length;
for (var i=0; i<count; i++)
{
   $('#it').append(
      $('<tr />').append(
         $('<th />', {text: form[i].**WHAT**}),
         $('<th />').append(
            $('<input />', { name: form[i]., placeholder: form[i]. type: 'text' })
         )
      )
   )
}

3 个答案:

答案 0 :(得分:0)

我认为$.getJSON就是你所追求的,例如。

$.getJSON( "../GetFieldsForLanguage.php", function( data ) {
    var items = [];
    var count = data.length;
    $.each( data, function( key, val ) {
        items.push( "<li id='" + key + "'>" + val + "</li>" );
    });
    $( "<ul/>", {
       "class": "my-new-list",
       html: items.join( "" )
    }).appendTo( "body" );
});

希望这有帮助!

答案 1 :(得分:0)

很少有观察结果:

  • 为什么JSON.stringify(data)JSON.parse(str)data已经是JSON对象?没有必要再次进行字符串化和解析。
  • 根据您在OP中发布的JSON,您的回复dataarray of objects。那么,为什么是Object.keys(数据)?
  • 而不是var count = Object.keys(data).length它应该是var count = data.length,因为数据是array而不是JS object

Working Fiddle

&#13;
&#13;
var data = [{"ev":"Description","iv":"...","id":"1"},{"ev":"Surface","iv":"...","id":"2"},{"ev":"Locals","iv":"...","id":"3"}];

var count = data.length;
for (var i=0; i<count; i++)
{
$('#it').append(
   $('<tr />').append(
      $('<th />', {text: data[i].ev}),
      $('<th />').append(
        $('<input />', { name: data[i].ev, placeholder: data[i].iv, type: 'text' })
      )
    )
  )
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="it">

</div>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

如果您的数据始终为array

var data = [
    {"ev":"Description","iv":"...","id":"1"},
    {"ev":"Surface"    ,"iv":"...","id":"2"},
    {"ev":"Locals"     ,"iv":"...","id":"3"}
];

console.log(data);

data.forEach(function (value) { 
    $('#it').append(
        $('<tr />').append(
            $('<th />', {text: value.ev}),
            $('<th />').append(
                $('<input />', { name: value.id, placeholder: value.iv })
            )
        )
    )
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="it"></div>