簡體   English   中英

將 PHP 數組數據發送到 javascript

[英]Sending PHP Array data to 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 } } );

您需要將所有課程 ID 放入一個數組中,然后從函數中返回它。

也不需要foreach循環。 $row是一個具有單個元素的數組,您可以使用數組索引直接訪問它。

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');
    $courses = array();
    while ($row = mysqli_fetch_assoc($result)) {
        $course = $row['course_id'];
        print_r($course); 
        echo "<br>";   // Print's 1 2 3 4 8 9 10 as expected 
        $courses[] = $course;
    }
    return $courses;
}

$course = getCourses();
?>
<script>
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 } } );

你為什么不把你的查詢結果放到一個數組中,在這里盲目: while($row = mysqli_fetch_array($result, MYSQLI_NUM)) { $data[] = $row; } while($row = mysqli_fetch_array($result, MYSQLI_NUM)) { $data[] = $row; }

return $data; 作為它的一個函數,你將它包裹起來, json_encode($data_variable) 基於你在你的 javascript 中調用函數 getCourse() 時分配的變量?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM