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();
}
}
?>
添加回答
舉報