首页 > 解决方案 > 如何使用来自 Javascript 的参数正确调用 PHP 函数?

问题描述

所以我正在制作一个石头剪刀布游戏。我想让它在用户输给计算机时,游戏结束或重新开始,并且用户的高分在 MySQL 中更新。我似乎无法让它工作。这就是我目前所拥有的:代码很大,所以我将添加一小部分。

应用程序.js

function lose(user, computer) {
    compScore++;
    userScore_span.innerHTML = userScore;
    compScore_span.innerHTML = compScore;
    rezultat_p.innerHTML = convertWord(user) + " loses to " + convertWord(computer) + ". Game Over!";
    getOutput();
}

function getOutput() {
    jQuery.ajax({
        type: "POST",
        url: 'myAjax.php',
        dataType: 'json',
        data: {functionname: 'gameOver', arguments: [userScore]},

        success: function (obj, textstatus) {
            if( !('error' in obj) ) {
                yourVariable = obj.result;
            }
            else {
                console.log(obj.error);
            }
        }
    });

}

myAjax.php

<?php

function gameOver($highScore){
    session_start();
    require_once 'dbh.inc.php';
    $user = $_SESSION['userid'];
    echo($user);

    $sql = "UPDATE users SET userHighScore = $highScore WHERE userId = $user;";

    $stmt = mysqli_stmt_init($conn);

    if(!mysqli_stmt_prepare($stmt, $sql)){
        header("location: ../leaderboard.php?error=stmtfailed");
        exit();
    }

    mysqli_stmt_bind_param($stmt, "s", $highScore);
    mysqli_stmt_execute($stmt);

    mysqli_stmt_close($stmt);

}
?>

所以当我运行它时,getOutput 函数会执行,但 PHP 函数似乎没有执行。也许这是PHP函数中的错误,我不确定。

我认为这$user = $_SESSION['userid'];不能正常工作。

标签: javascriptphpjquery

解决方案


您不能从 JavaScript调用 PHP函数。

您可以向 HTTP 端点发出 HTTP 请求。该 HTTP 端点可以由 PHP程序处理。它可以始终调用该函数或有条件地调用它(基于$_POST例如的内容)。

例如

$functionname = $_POST['functionname'];
if ($functionname == "gameOver") {
    gameOver($_POST['arguments'][0]);
}

…但是你应该抽象一些东西,这样你发送的数据就不会与PHP的实现紧密耦合。

(请注意,您的 JS 期望在响应中返回一些 JSON,但您的函数不输出任何内容。请确保您也处理它。)


推荐阅读