3 回答
TA贡献1911条经验 获得超7个赞
money您的服务器需要在您的数组中调用一个密钥$_POST。这意味着为了正确接收数据,您还需要使用密钥发送数据。在 PHP 中,该数据看起来像一个关联数组,而在 JavaScript 中,该数据看起来像一个对象,都具有键和值。
完成键值结构的最简单方法是使用结构创建字符串key=value。这类似于表单将数据发送到服务器的方式,并且无需修改后端即可接收数据。
var package = `money=${money}`;
没有什么问题XMLHttpRequest(有ActiveXObject;)),我建议学习Fetch API。它是向服务器发出 HTTP 请求或从服务器发出 HTTP 请求的更新和简化规范。您已表示不需要接收响应,这意味着发送数据的基本 POST 请求如下例所示。
fetch('../php/credits/credit.php', {
method: 'POST',
body: package
});
第一个参数是 URL,第二个参数是选项对象。该method属性不言而喻。该body属性是您要发送的数据(相当于xml.send(package);)。
现在,如果您的 URL 正确,则应将包含正确数据的 HTTP 请求发送到您的服务器。
// $_POST should have received data, and because you've send it as a
// key-value it will be represented as an associative array with,
// you guessed it, keys and values.
$money = $_POST[ 'money' ];
// $money will always be a string in this form, so you'll
// need to convert it if you need it to be a number.
$money_as_number = intval( $money );
要测试这是否有效,请打开network浏览器开发人员工具中的选项卡。您可以检查是否发生 HTTP 请求并检查是否发送了正确的负载。
TA贡献1818条经验 获得超11个赞
好吧,这就是控制台中的工作原理......
function updateDatabase() {
var package = money;
console.log(package);
fetch('../php/credits/credit.php', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify(package)
});
}
控制台日志 = 1975 game.js:1608:9
我现在只需要通过我的 php 将 1975 年的值发布到数据库。它仍然将 0 发布到我的数据库中。
TA贡献1719条经验 获得超6个赞
我解决了。感谢您让我走上正确的道路!
<?php
session_start();
if (isset($_SESSION['userid'])) {
$money = json_decode(file_get_contents('php://input'), true);
$money_as_number = intval( $money );
$userid = $_SESSION['userid'];
try {
$db = DB();
$stmt = $db->prepare("UPDATE usersystem SET money=:money WHERE userid=:userid");
$stmt->bindValue(':money', $money_as_number, PDO::PARAM_INT);
$stmt->bindValue(':userid', $userid, PDO::PARAM_STR);
$stmt->execute();
}
catch(PDOException $e)
{
$db = null;
echo $e->getMessage();
}
}
?>
添加回答
举报