将 PHP 数组数据发送到 javascript

我有一个 PHP 函数,我正在查询 mySQL 数据库,我需要将该查询中的数据发送到一个 javascript 函数,以便可以在绘图图中使用数据。我能够在 PHP 中查询数据并获取我需要的信息,但是当我尝试在我的 javascript 文件中获取信息时,它显示为 NULL。这是我的代码,其中包含有关我得到的内容的评论。


PHP函数:


function getCourses() {

    $conn = getDBConn();

    $query = "SELECT course_id FROM TraineeEventCourses GROUP BY course_id;";

    $result = mysqli_query($conn, $query) or die('Error connecting to mysql');


    while ($row = mysqli_fetch_assoc($result)) {

        foreach ($row as $courseID) {

            $course = $courseID;

            print_r($course); 

            echo "<br>";   // Print's 1 2 3 4 8 9 10 as expected 

            // return $course;

        }

    }

    // print_r($course); 

    // echo "<br>"; // When not commented out this goes with the return statement but it only returns 10 for some reason instead of returning the whole array. 

}

Javascript:


var courses = "<?php echo json_encode($course, JSON_PRETTY_PRINT) ?>";


            console.log(courses); // Returns NULL but should be returning 12348910


            TESTER = document.getElementById('tester');

            Plotly.plot( TESTER, [{

                x: [courses],

                y: [courses] }],

                { margin: { t: 0 } } );


catspeake
浏览 159回答 2
2回答

泛舟湖上清波郎朗

您需要将所有课程 ID 放入一个数组中,并从函数中返回它。也不需要foreach循环。$row是具有单个元素的数组,您可以使用数组索引直接访问它。function getCourses() {&nbsp; &nbsp; $conn = getDBConn();&nbsp; &nbsp; $query = "SELECT course_id FROM TraineeEventCourses GROUP BY course_id;";&nbsp; &nbsp; $result = mysqli_query($conn, $query) or die('Error connecting to mysql');&nbsp; &nbsp; $courses = array();&nbsp; &nbsp; while ($row = mysqli_fetch_assoc($result)) {&nbsp; &nbsp; &nbsp; &nbsp; $course = $row['course_id'];&nbsp; &nbsp; &nbsp; &nbsp; print_r($course);&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; echo "<br>";&nbsp; &nbsp;// Print's 1 2 3 4 8 9 10 as expected&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; $courses[] = $course;&nbsp; &nbsp; }&nbsp; &nbsp; return $courses;}$course = getCourses();?><script>var courses = "<?php echo json_encode($course, JSON_PRETTY_PRINT) ?>";console.log(courses); // Returns NULL but should be returning 12348910TESTER = document.getElementById('tester');Plotly.plot( TESTER, [{&nbsp; &nbsp; x: [courses],&nbsp; &nbsp; y: [courses] }],&nbsp; { margin: { t: 0 } } );

回首忆惘然

你为什么不把你的查询结果放到一个数组中,在这里失明:&nbsp;while($row = mysqli_fetch_array($result, MYSQLI_NUM)) { $data[] = $row; }return $data;作为一个函数,您将其包装起来,并根据您在将函数 getCourse() 调用到javascript中时分配的变量来包装它和 json_encode($data_variable) ?
打开App,查看更多内容
随时随地看视频慕课网APP