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