如何使用jquery在ajax响应中发送一堆json对象

时间:2014-05-14 20:12:07

标签: php jquery ajax json pdo

我正在玩jQuery的$ .ajax而且我不确定我应该如何做以下事情:

这是我的javascript(现在它只是嵌入在html页面中)

$.ajax({
    type: 'GET',
    url: 'DBConnect.php',
    data: '',
    dataType: 'json', 
    success: function(data) {

        console.dir(data);
    },
    error:function (xhr, ajaxOptions, thrownError) {
        dir(thrownError);
        dir(xhr);
        dir(ajaxOptions);
    }
});

这是DBConnect.php的样子:

$username = "root";
$pass = "pass";
$host = "127.0.0.1";
$dbname = "test";

//queries
$table = "events";
$fetchAll = "SELECT * FROM $table";

try {
    $DB = new PDO("mysql:host=$host;dbname=$dbname", $username, $pass);
    //_WARNING uncommented when debugging
    $DB->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
    //$DB->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    $query = $DB->query($fetchAll);
    $query->setFetchMode(PDO::FETCH_OBJ);

    while($row = $query->fetch()) {
        echo json_encode($row);
    }

} catch(PDOException $e) {
    echo $e->getMessage();
}

$DB = null;

这样做我收到语法错误。我以为我可以作为一个json对象返回每一行,但显然这不起作用。我可以将所有行对象添加到一个数组并将其转换为json,但我想知道是否有更好的\更有效的方法来执行此操作。

1 个答案:

答案 0 :(得分:1)

更改while循环:

$temp = array();
while($row = $query->fetch()) {
    $temp[] = $row;
}
echo json_encode($temp);

试试这个,如果有帮助,请告诉我!