PHP MySQL 输出数组与 JavaScript json_encode不产生输出


php mysql output array with json_encode to javascript produce no output

mysql 生成了一个数组并使用json_encode生成输出。 Javascript不产生任何输出。

查询结果中有两行:

科目編號 科目 課程簡介 課程期間 課員

208.01.00 舊約綜覽上 2015级 舊約綜覽上 2015-06 至 2015-08 劉健全102.00.00 成長班 2015 班 成長班 2015-05 至 2015-07 劉美玲

PHP 脚本 getEventJSON.php:

mysqli_set_charset($bd, 'utf8_general_ci');
$result_event = mysqli_query($bd, $qry);
$json = array();

while ($r = mysqli_fetch_array($result_event)) {
    $json[] = array("active"=>trim($r['active']), "event_id"=>trim($r['event_id']));
}

echo json_encode($json);
mysqli_close($bd);

这是生成"UL"并附加两个"LI"的javascript。

$(document).ready(function () {
            /* call the php that has the php array which is json_encoded */
            $.getJSON('getEventJSON.php', function (data) {
                /* data will hold the php array as a javascript object */
                $.each(data, function (key, val) {
                    $('ul').append('<li id="' + key + '">' + val.active + ' ' + val.event_id + '</li>');
                });
            });
        });

但是,浏览器中没有输出。 我不知道如何让它工作。 非常欢迎您的启蒙。

你应该使用另一个$.each()循环:

$.each(data, function (key, val) {
    $.each(val, function (key, elem) {
      $('ul').append('<li id="' + key + '">' + elem.active + ' ' + elem.event_id + '</li>');
    });
});

当你循环一个包含一些对象的数组时,在回调函数中(key, val)键不是实际的key名称,而是对象的索引。

因此,如果您想获取对象的键名,

则必须再次将其循环到数组中的每个对象,现在这次您在回调中获取带有参数key的键名。

  1. [{},{}]在这种情况下,第一个循环将获取每个对象的索引,因此它将像0, 1一样返回索引。
  2. 然后,如果您应用另一个循环,那么现在您正在尝试循环到 js 对象{}在这种情况下,回调的key参数将给出每个对象中使用的实际键名。