【问题标题】:Javascript can't read my json arrayJavascript 无法读取我的 json 数组
【发布时间】:2015-07-02 19:36:53
【问题描述】:

所以我从我的数据库中取出一些数据并使用以下代码将其放入一个 json 数组中:

getDataFromDB:

<?php

include"connectToDB.php";
//voert de volgende query uit
$result = $db->query("SELECT * FROM youtubevideos");

$array = array();

while($row = $result->fetch_assoc()) {
    $array = $row;
    echo json_encode($array);
}
?>

dataToHTML.js:

$.getJSON("getDataFromDB.php", function(result){
    $.each(result, function(i, field){
        console.log(field);
    });
});

在 console.log(field) 中,它应该给我数组中的所有数据。但由于某种原因,我的控制台是空的。它似乎无法读取我的数组。但有趣的是…… 当我在我的 php 文件中的这行代码 echo json_encode($array); 之后键入 exit(); 时,它以某种方式可以读取它。但问题是它只给了我数据库中的一行。当然我想从我的数据库中获取所有数据,所以我不能使用exit();。他们对我做错了什么还有其他建议吗? 谢谢!

【问题讨论】:

  • 在php部分为什么不向数组添加元素,现在你将数组设置为行,更改为$array[] = $row将一行推入数组,然后将回声移动到在while循环之后

标签: javascript php jquery mysql json


【解决方案1】:

您的 php 文件返回了多个 json 字符串,因为您在 for 循环中使用了 echo

把你的代码改成这个

<?php

include"connectToDB.php";
//voert de volgende query uit
$result = $db->query("SELECT * FROM youtubevideos");

$array = array(); // you can remove this

while($row = $result->fetch_assoc()) {
    $array[] = $row;
}
echo json_encode($array);

您现在将获得所有行。

【讨论】:

  • 你不需要这一行:$array = array();
  • @CodeGodie 你是对的,我将它添加为评论以匹配你的评论:)
【解决方案2】:

这部分代码在数据库返回的每一行上输出一个 JSON 数组:

while($row = $result->fetch_assoc()) {
  $array = $row;
  echo json_encode($array);
}

您应该先将项目添加到数组中,然后在循环外输出您的 json 编码数组。

while($row = $result->fetch_assoc()) {
  $array[] = $row;
}

echo json_encode($array);

试试看。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多