在div

时间:2015-09-21 14:41:18

标签: javascript php jquery html json

我正在尝试从php文件中检索json并在div中打印名称。我无法得到任何结果。

HTML:

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $('button').click(function(){
        $.ajax({
            type: "post",
            url: "services/myphp1.php",
            dataType: "json",
            async: false,
            contentType: 'application/json',
            success: function(data) {
                var html = "";
                JSON.parse(data).forEach(function(item){ 
                    html+ = item.name;
                });
                $('#div1').append(html);
            }
        });
    });
});
</script>
</head>
<body>
<button>Click Me!</button>
<div id="div1"></div>
</body>
</html>

PHP:

<?php
$alpha = '{Persons:[{name:"Robert",age:"33"},{name:"Lina",age:"23"},{name:"Emerald",age:"19"}]}';
echo json_encode($alpha);
?>

有人能告诉我我在哪里弄错了吗?我想在我的div中找到名为'#div1'的3个人的名字。提前致谢!!! ;(....

3 个答案:

答案 0 :(得分:2)

您的JSON结构不正确。为了确保其结构良好,让PHP为您完成工作。在PHP中,像这样构建你的JSON:

$arr = array(
    "Persons" => array(
        array(
            "name" => "Robert",
            "age" => 33
        ),
        array(
            "name" => "Lina",
            "age" => 23
        ),
        array(
            "name" => "Emerald",
            "age" => 23
        )
    )
);
header("Content:application/json");
echo json_encode($arr);

然后在JS中,您将接收纯JSON,因此不需要解析,您只需要迭代。我也会使用$.getJSON

$.getJSON("services/myphp1.php", function (data) {
    data.Persons.forEach(function (i) {
        $('#div1').append(i.name);
    });
});

答案 1 :(得分:1)

除此之外,假设您的php正确返回该JSON,您返回的JSON是一个具有属性'Persons'的对象,即一个数组。 所以试试:

JSON.parse(data).Persons.forEach( ... )

答案 2 :(得分:1)

我认为代码在行上有错误

html+ = item.name; 
必须这样做 html + = item.name;

你的json无效。

点击此处:

http://jsonlint.com/