javascript - 在 PHP 和 JavaScript 之间传递数据?

标签 javascript php jquery google-visualization

总体思路是在 div 中绘制某人得分的图表。我有一个按钮,单击该按钮即可运行图形绘制功能。我还有另一个函数,它使用 switch 语句从数据库中检索数据,因为该函数与其他按钮共享。

我的数据检索功能:

var getdata = function(button_id) {
    $.ajax({
        type: "POST",
        url: "../scripts/getdata.php",
        dataType: "html",
        data: {id: button_id},
        success: function(result){
            $("#profilebox").html(result);
        }
    });
};

运行 getdata.php 并将值返回到空白 div 中。

获取数据.php:

<?php
session_start();
$switchcase = $_POST['id'];
$email = $_SESSION['user']['email'];
//connect to database here
$result=mysqli_query($con,"SELECT * FROM users WHERE email = '$email'");
switch ($switchcase) {
    case "profile_home":
        while($row = mysqli_fetch_array($result)) {
        echo $row['username'] . "'s Profile<br><br>";
        echo "Name: " . $row['firstname'] . ' ' . $row['lastname'] . "<br><br>";
        echo "Things I like:<br>";
        echo $row['like'] . "<br><br>";
        echo "Things I dislike:<br>";
        echo $row['dislike'] . "<br><br>";
        echo "Other Sports:<br>";
        echo $row['sports'];
    };
        break;
    case "profile_scores":
        while($row = mysqli_fetch_array($result)) {
        $row['correct'];
        $row['incorrect'];
    };
        break;
    case "profile_merits":
        //CODE GOES HERE;
        break;
    case "profile_help":
        //CODE GOES HERE;
        break;
    case "profile_edit":
        //CODE GOES HERE;
        break;
}
mysqli_close($con);
?>

接收 POSTed div id (profile_scores),从数据库获取数据,切换到第二种情况。现在问题就出在这里,我不知道如何通过

        $row['correct'];
        $row['incorrect'];

将值返回到原始页面并让它们显示在图表中

/* correct value */

/* incorrect value */

是。

图形绘制功能:

function drawVisualization() {

    getdata("profile_scores");

    // Create and populate the data table.
    var data = google.visualization.arrayToDataTable([
        ['', 'Correct', 'Incorrect'],
        ['Scores',  /* correct value */, /* incorrect value */],
    ]);

    var options = {
            'title': 'Total Scores Overall',
            'width': 600,
            'height': 400,
            'hAxis': {title: ''},
            'backgroundColor': 'transparent'
    };
    // Create and draw the visualization.
    new google.visualization.ColumnChart(document.getElementById('profilebox')).
    draw(data, options);
};

此函数是当用户单击按钮时运行的函数,因此它调用 getdata 函数,然后使用从 getdata.php 接收到的值绘制图表。

感谢任何帮助:)

最佳答案

我完全不确定你在要求什么,但这是我的猜测。

如果您希望在情况 2 中从页面上的数据库中获取 $result。然后您可以使用 JSON 将 PHP 数组传递给 Javascript,然后完成其余的工作。就像假设这是你的 switch 语句的第 2 种情况

case "profile_scores":
{
    $row = $result->fetch_array(MYSQLI_NUM);
    echo json_encode($row);
    break;
}

并在你的ajax响应中执行此操作

$.ajax({
    type: "POST",
    url: "../scripts/getdata.php",
    dataType: "html",
    data: {id: button_id},
    success: function(result){
        console.log(result);
        console.log(JSON.parse(result));
        var phparray = JSON.parse(result);
        var correct = phparray[12];   //<---This will return 100 
        var incorrect = phparray[13];  //<---This will return 10
        //I Dont know which one is your correct or incorrect column number but you can have an idea now
    }
});

这样你就可以将 PHP 数组转换为 javascript,这是数据库结果。另外我想建议你纠正 Switch 语法。这不会有太大区别,但应该小心,所以这是正确的语法。

switch($switchcase)
{
   case "case1":
   {
       //Code to go
       break;
   }
   case "case2":
   {
       //Code to go
       break;
   }
   case "case3":
   {
       //Code to go
       break;
   }
}

请注意,我已将 break; 命令放入 Switch Case

关于javascript - 在 PHP 和 JavaScript 之间传递数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23176014/

相关文章:

javascript - jQuery 通过索引更改 css

php - 如何在 PHP 中将非 UTF-8 编码转换为更具可读性的/UTF-8 编码?

javascript - 在javascript中将字符串数组转换为名称/值对象

javascript - javascript for 循环内的异步过程

javascript - 使用带有自定义 header 的 Ajax 加载图像

javascript - 如何编写正则表达式从字符串方程中拆分两个连续的数学运算符( "/-"、 "*-")?

php - 在 Laravel 5 中将 `dateTime` 列拆分为单独的 `date` 和 `time` 列

php - 找不到 fatal error 类 MainController

javascript - jQuery(this) 和 qtip 不工作

jQuery - AJAX - 在成功函数中获取请求参数