php mysql输出数组用json_encode到javascript不产生输出

时间:2015-01-11 09:16:36

标签: javascript php jquery mysql

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"的javascript。并追加两个" LI"

$(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>');
                });
            });
        });

但是,浏览器中没有输出。我不知道如何使它工作。你的启示是最受欢迎的。

1 个答案:

答案 0 :(得分:0)

您应该使用另一个$.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名,而是对象的索引。

因此,如果您想获取对象的密钥名称,则必须将其再次循环到数组中的每个对象,现在这次在回调中获得带有参数key的密钥名称。

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