javascript - 如何使用来自 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'];
不能正常工作。
解决方案
您不能从 JavaScript调用 PHP函数。
您可以向 HTTP 端点发出 HTTP 请求。该 HTTP 端点可以由 PHP程序处理。它可以始终调用该函数或有条件地调用它(基于$_POST
例如的内容)。
例如
$functionname = $_POST['functionname'];
if ($functionname == "gameOver") {
gameOver($_POST['arguments'][0]);
}
…但是你应该抽象一些东西,这样你发送的数据就不会与PHP的实现紧密耦合。
(请注意,您的 JS 期望在响应中返回一些 JSON,但您的函数不输出任何内容。请确保您也处理它。)
推荐阅读
- java - 无法使用错误代码启动 glassfish 服务
- node.js - AWS Node.js Lambda 调用 Lambda 失败
- php - 我应该寻找哪些其他对 wp-admin 登录页面的后门访问?
- spring-cloud-contract - spring cloud 合约 - Wiremock Bad
从分支内部调用方法异常详细信息 - javascript - 从 React 中的文件夹导入 index(.ts|.js) 文件
- android - iOS 三重 DES 加密生成与 Android 不同的字符串
- list - Haskell中的斐波那契无限列表
- angular - 在角度 5 引导程序 4 中具有 rtl 布局时,角度材料输入从右侧(页面开头)开始
- java - How to set custom locale in java ee?
- javascript - 如何将多列传递到 Google 电子表格中的公式中?