Javascript函数在页面加载时不执行

时间:2016-01-17 20:38:59

标签: javascript html json

我想创建一个动态列表组,其中包含在页面加载时加载的list-group-items。列表组项目来自数据库。 php函数返回一系列课程(这可以成功)。我使用Javascript来获取此数组,JSON对其进行编码并在列表组中显示项目,但Javascript代码无效。我使用过<body onload="get_courses()">,但这不适用于页面加载。但是,如果我使用<body onload="alert('test');">,它可以工作,但函数内的警报不起作用。 我的代码如下。我在相同的html文件中有Javascript代码。

的javascript

<script type="text/javascript">
function get_courses(){
    var service = <?php echo json_encode(get_course_list($userID)); ?>;
    var course_array = JSON.parse(service);
    var index;
    var ul = document.getElementById("course_list");
    for (index=0; index<course_array.length; index++){
        var li = document.createElement("a");
        li.appendChild(document.createTextNode(course_array[index]));
        ul.appendChild(li);
    }
}
</script>

HTML

<body onload="get_courses()">
    <form action="../../controller/progressTeacherControl.php" method="get">
        <div class="box-body">
            <div class="list-group" id="course_list">
                <!--a href="#" class="list-group-item">This would be a generated course name</a-->
            </div>
        </div>
     </form>
</body>

progressTeacherControl.php是定义php函数get_course_list()的地方。 任何帮助解决这个问题将不胜感激。

3 个答案:

答案 0 :(得分:1)

感谢所有建议,但我无法找到上述解决方案。但是,我找到了使用php来获取我想要的数据的解决方法,并且它也更容易使用。代码如下:

<强> PHP

<form action="student_progress_allstudents.php" method="get">
    <div class="box-body">
        <div class="list-group" id="course_list">
            <?php
            foreach(get_course_list($userID) as $block) {
                list($section, $course, $course_id) = explode(" ", $block); ?>    
                <a href="student_progress_allstudents.php?c_id=<?php echo $course_id ?>" class="list-group-item">
                    <?= $course ?>
                </a>
            <?php } ?>
        </div>
    </div>
</form>

答案 1 :(得分:0)

如果您在那里打印JSON,那么它将采用适合JavaScript的格式。它将打印为文字数组。

请放弃JSON.parse()

答案 2 :(得分:-1)

如果你在函数中注释掉所有代码并将alert()放在那里,它会运行吗?

此外,console.log()不如关闭警报那么烦人。