我正试图围绕 fetch api 来获取。从我一直在研究的内容来看,它看起来很容易,但我的想法并没有完全理解。在我的游戏 Javascript 中,它以 money=2000 全局变量开头。
游戏玩得很好,但是当有人离开并转到他们的个人资料页面并返回游戏时,游戏会重置并从头开始游戏并将钱重置回 2000。
真正疯狂的是,如果我刷新页面,我终于在网页上看到了正确的值 2200,也就是数据库中的值。
开始游戏.html
<!DOCTYPE html>
<html>
<head>
<TITLE>Interactive Game</TITLE>
<meta charset="UTF-8">
</head>
<body background="images/pvpcoinnew.png" style="width=120%" onLoad="updateMoney(); popup('popUpDiv'); click(); updown()" oncontextmenu="return false;">
<img background="images/pvpcoinnew.png">
<select id="textbox">
<option value="1">1</option>
<option value="5">5</option>
<option value="10">10</option>
<option value="25" selected>25</option>
<option value="50">50</option>
<option value="75">75</option>
<option value="100">100</option>
<option value="200">200</option>
<option value="250">250</option>
<option value="500">500</option>
<option value="1000">1000</option>
</select>
<button type="click" id="button" onclick="enterWager(); return false;">Wager!</button>
<p>Money: $<span id="money"></span><br></p>
<script type="text/javascript" src="game.js"></script>
</body>
</html>
下面的game.js文件一开始就有钱预设为2000。 game.js
//money = 2000;
window.money = 2000;
fetch('../php/moneyupdate/moneyupdate.php?money=value')
.then((response) => {
return response.json()
})
.then((money) => {
// Work with JSON data here
window.money = money
console.log(money)
})
.catch((err) => {
// Do something for an error here
})
document.getElementById("money").innerHTML = window.money;
当从 fetch 触发 php 文件时,状态为 200。XHR 响应有效负载返回数据库中的“2200”,但网页仍显示 2000。
这是moneyupdate.php文件
<?php
session_start();
if(empty($_SESSION['userid']))
{
header("Location: ../login/index.php");
}
include('../../login/database.php');
if(isset($_GET["money"])) {
$money = htmlspecialchars($_GET["money"]);
$userid = $_SESSION['userid'];
try {
$db = DB();
$stmt = $db->prepare("SELECT money FROM usersystem WHERE userid=?");
$stmt->execute([$userid]);
$money = $stmt->fetchColumn();
// send a JSON encded money array to client
header('Content-type: application/json;charset=utf-8');
echo json_encode($money);
//}
}
catch(PDOException $e)
{
$db = null;
echo $e->getMessage();
}
}
// Notes: The json_encode function returns the JSON representation of the given value.
// The json_decode takes a JSON encoded string and converts it into a PHP variable.
?>
感谢您的帮助和回复!