使用PHP创建JSON提要以用于JQuery


Creating a JSON feed using PHP For Use With JQuery

编辑:使用以下删除建议解决:echo '{"results":'.json_encode($arr).'}';并替换为echo json_encode($arr);

这与更换这些线路相结合:

var items = [];
        $.each(data, function(key, val) {
            $.each(val, function(key, val)
            {
                    //Test insert into box using customer number
                $("#chatbox").html(val.number);
            });
        });

带有

$.each(data, function(key, val) {
$("#chatbox").html(this.number);
});

让它工作起来,我现在可以使用this和我想要的属性来访问对象数据。

结束编辑

嗨,有人能帮我处理这些JSON提要吗。我几乎做到了(我想(,但每当我把这个提要放入JQuery时,它都会把我们作为一个字符串而不是一个JSON对象数组,我不知道为什么。

创建提要的PHP:

<?php
session_start();
include 'connect.php';
    $number = $_SESSION['number'];
    $query = "SELECT * FROM $tableName WHERE number='$number'";
    $result = mysql_query($query, $sqlCon);
    $arr = array();
    while($obj = mysql_fetch_object($result)) {
        $arr[] = $obj;
    }
    if (count($arr) == 0)
    {
        echo "Your reference number is: $number";
    } else {
        echo '{"results":'.json_encode($arr).'}';
    }
?>

返回的JSON如下所示:

{"results":[{"id":"40","number":"466741","message":"dsfdsv","date":"2011-10-05","time":"00:28:32"},{"id":"41","number":"466741","message":"sacsac","date":"2011-10-05","time":"00:30:17"}]}

我想要的是:

[{"id":"40","number":"466741","message":"dsfdsv","date":"2011-10-05","time":"00:28:32"},{"id":"41","number":"466741","message":"sacsac","date":"2011-10-05","time":"00:30:17"}]

或者一个返回值,它将允许我对对象进行迭代。

我正在阅读的JQuery:

$.getJSON('get.php', function(data) {
var items = [];
    $.each(data, function(key, val) {
        $.each(val, function(key, val)
        {
                //Test insert into box using customer number
            $("#chatbox").html(val.number);
        });
    });
});

我想我的问题是我创建JSON提要的方式,但我只是被卡住了,不知道如何修复它。

任何帮助都将不胜感激,谢谢。

您应该从PHP设置头,以指定它是json内容。这不是100%必需的,但这是一个很好的实践,您将在firebug等工具中看到正确解析的内容类型。

header('Content-type: application/json');

您正在用一个结果键包装json内容,而您没有在javascript中查找该结果键,因此您要么需要删除该部分,要么在javascript中寻找该部分。既然您说您想要的是数组,而不是具有结果键/值的对象,那么只需将echo '{"results":'.json_encode($arr).'}';替换为echo json_encode($arr);