在JSON数组中回显变量

时间:2016-03-20 19:03:53

标签: javascript php jquery

我正在尝试访问并在我的页面上的json对象中显示变量。谁能告诉我为什么变量会显示三次?

my_array.php

<?php

$my_data=array(name=>"john",age=>"30", city=>"copenhagen");

// sending output
header('Content-Type: text/json');
echo json_encode($my_data,true);
?>

My_page.php

<script>
$(document).ready(function() {
  $("button").click(function() {
    $.getJSON("my_array.php", function(data) {
      $.each(data, function(key) {
        $("#showdata").append(data.city);
      });
    });
  });
});
</script>

//Show the data further down the page.

<div id="showdata"></div>

显示

copenhagencopenhagencopenhagen

5 个答案:

答案 0 :(得分:1)

那是因为你正在迭代每个&#39;您收到的json响应中的数据项,my_array.php中有3个key =&gt;值对

删除&#34; $。每个(数据,功能(键){}&#34;只会返回一次&#39; city&#39;

    $(document).ready(function(){
        $("button").click(function(){
            $.getJSON("my_array.php",function(data){
                $("#showdata").append(data.city);
            });
        });
    });

答案 1 :(得分:1)

使用此

my_array.php

<?php

$my_data = array(
    name    =>  "john",
    age     =>  "30",
    city    =>  "copenhagen"
);

// sending output
header('Content-Type: application/json');
echo json_encode($my_data, true);

?>

My_page.php

<div id="showdata"></div>
<button>Click Me!</button>
<script src="js/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $("button").click(function(e){
        $.getJSON("test.php", function(data){
            console.log(data);
            $("#showdata").append(data.city);
        });
    });
});
</script>

这只会给你一个哥本哈根。

希望它有所帮助...

答案 2 :(得分:0)

首先要做的事情:

设置:

header("Content-Type: application/json");

以上:

echo json_encode($my_data,true);

在你的php文件上。

或者在您的javascript上使用以下代码段:

$.getJSON("my_array.php",function(data)
{
  data=JSON.stringify(data);
  $.each(data, function(key) 
  {
    $("#showdata").append(data.city);
  });
});

此外,无论是在返回数据之上的两种方式都是一个Object,所以为了在你的php文件上正确返回数据必须是:

$my_data=array(array(name=>"john",age=>"30", city=>"copenhagen"));

注意:php的json_encode上的关联数组变成了Objects。 json_encode上的非关联数组仍然是一个数组

答案 3 :(得分:0)

我猜是因为你在页面上有三个按钮而$ .each选择了选择器:

{{1}}

答案 4 :(得分:0)

由于你在JSON对象中拥有三个键,你正在迭代3次,

$.getJSON( "ajax/test.json", function( data ) {
  var items = [];
  $.each( data, function( key, val ) {
    console.log( "key + " " + val" );
  });

查看JQuery文档以获取更多信息。

http://api.jquery.com/jquery.getjson/