3 回答
TA貢獻1911條經(jīng)驗 獲得超7個贊
money您的服務器需要在您的數(shù)組中調(diào)用一個密鑰$_POST。這意味著為了正確接收數(shù)據(jù),您還需要使用密鑰發(fā)送數(shù)據(jù)。在 PHP 中,該數(shù)據(jù)看起來像一個關聯(lián)數(shù)組,而在 JavaScript 中,該數(shù)據(jù)看起來像一個對象,都具有鍵和值。
完成鍵值結(jié)構(gòu)的最簡單方法是使用結(jié)構(gòu)創(chuàng)建字符串key=value。這類似于表單將數(shù)據(jù)發(fā)送到服務器的方式,并且無需修改后端即可接收數(shù)據(jù)。
var package = `money=${money}`;
沒有什么問題XMLHttpRequest(有ActiveXObject;)),我建議學習Fetch API。它是向服務器發(fā)出 HTTP 請求或從服務器發(fā)出 HTTP 請求的更新和簡化規(guī)范。您已表示不需要接收響應,這意味著發(fā)送數(shù)據(jù)的基本 POST 請求如下例所示。
fetch('../php/credits/credit.php', {
method: 'POST',
body: package
});
第一個參數(shù)是 URL,第二個參數(shù)是選項對象。該method屬性不言而喻。該body屬性是您要發(fā)送的數(shù)據(jù)(相當于xml.send(package);)。
現(xiàn)在,如果您的 URL 正確,則應將包含正確數(shù)據(jù)的 HTTP 請求發(fā)送到您的服務器。
// $_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瀏覽器開發(fā)人員工具中的選項卡。您可以檢查是否發(fā)生 HTTP 請求并檢查是否發(fā)送了正確的負載。
TA貢獻1818條經(jīng)驗 獲得超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
我現(xiàn)在只需要通過我的 php 將 1975 年的值發(fā)布到數(shù)據(jù)庫。它仍然將 0 發(fā)布到我的數(shù)據(jù)庫中。
TA貢獻1719條經(jīng)驗 獲得超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();
}
}
?>
添加回答
舉報
