javascript - 使用 JSON 将包含 SQL 查询结果的数组返回到网页

标签 javascript php jquery arrays json

我有一个运行 SQL 查询的 PHP 脚本。我想将结果放入数组中,将其编码为 JSON 对象,将其回显给调用它的 Javascript,然后将其用作数组来编写一些 HTML。

这是使用 POST 调用 PHP 脚本的 JS。我尝试使用 JSON.parse(data) 解析回显数据(我也尝试了 jQuery.parseJSON(data) - 不确定是否有区别),然后我显示用于测试的 HTML 页面上的原始回显数据。

var components = [];    // create empty array for component list
if ($('#area').val) {   // if area contains a value and isn't zero (i.e. an area has been selected)
    $.post("/basic/get_area_components.php"
    ,{area: $("#area").val()}
    ,function(data){ components = JSON.parse(data);
        $("#components_raw").html(data);
        $("#components").html(components);
    });
}

PHP 脚本(建立数据库连接后)如下所示:

$result = $conn->query("SELECT Component FROM ConfigComponent WHERE Parent =" . $area);

while($row = $result->fetch_array()) {
    $rows[] = $row;
}

$i = 1;
foreach ($rows as $value) {
    $components[$i] = $value[0];
    $i++;
}

echo json_encode($components);

当我运行脚本时,我在 HTML 页面上得到如下原始输出:

{"1":"Handlebar","2":"Stem","3":"Headset","4":"Fork"}

这似乎是一个格式正确的 JSON 对象,但在解析的 components 数组中没有任何内容,也没有异常。我已尝试使用 forEach 扫描数组并单独打印或提醒元素,但无济于事。

如何正确解析 JSON 对象并在 Javascript 中使用它?是JS解析的问题,还是PHP编码的问题?

最佳答案

这种行为是正常的。 Javascript 只支持索引数组。因为您在 php 中的索引以 1 而不是 0 开头,所以它变成了一个关联数组而不是索引。

$i = 0; // start with 0
foreach ($rows as $value) {
    $components[$i] = $value[0];
    $i++;
}

   foreach ($rows as $value) {
      // or don't use an index when adding a value to the array         
      $components[] = $value[0];
   }

这将产生一个 json 数组 [“ Handlebars ”,“把立”,“耳机”,“前叉”]

关于javascript - 使用 JSON 将包含 SQL 查询结果的数组返回到网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47166463/

相关文章:

javascript - 将 jQuery 与切换事件结合使用

javascript - React Native & RTK 查询 - 请求成功时调用另一个端点

PHP 面向对象 : How to get database rows as objects?

php - 比较不同表中的2个Mysql列并删除

php - 根据之前的日期选择日期范围

jquery - 三折在线小册子作为网站,如何制作动画?

php - 返回调用网站

javascript - Canvas2Image.js 通过元素点击将 base64 图像保存为 png

javascript - 单击另一个选项卡时如何关闭 Accordion 选项卡?

PHP MySQL 函数死亡