【问题标题】:How do I send a bunch of json objects in an ajax response with jquery如何使用 jquery 在 ajax 响应中发送一堆 json 对象
【发布时间】:2014-07-03 01:46:31
【问题描述】:

我正在使用 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,但我想知道是否有更好\更有效的方法来做到这一点。

【问题讨论】:

  • 这只会返回结果的第一行...
  • 先连接行,然后是 json_encode()。

标签: php jquery ajax json pdo


【解决方案1】:

更改while循环:

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

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

【讨论】:

  • 我想我必须这样做。但这是将 json 数据传回浏览器的合适方式吗?我想我真的在问我的一般方法是否有缺陷-应该在我的问题中更清楚地说明这一点。
  • 你原来的方法确实有缺陷。您不能在 while 循环中继续回显结果。输出将不是有效的 json 对象(它将是一串连接的 json 对象)。
猜你喜欢
  • 1970-01-01
  • 2017-08-28
  • 1970-01-01
  • 2011-09-19
  • 2022-06-14
  • 1970-01-01
  • 2013-03-02
相关资源
最近更新 更多