为了账号安全,请及时绑定邮箱和手机立即绑定

将全局变量传递给ajax函数,发布到php,保存到数据库

将全局变量传递给ajax函数,发布到php,保存到数据库

慕沐林林 2023-07-14 15:37:31
我有一个全局变量,我想将其传递到 Ajax 中。Ajax 对我来说非常陌生,我已经做了一些研究和测试,但我陷入困境。我不知道第一个问题的变量是否被传递到 Ajax 函数中。我对 Json 并不是很感兴趣,但是我也尝试过,但它也不正确。我不希望从 php 获得返回页面的响应,该页面正在使用现有的 js 和 html 进行更新。我的第二个困境是我的 php 文件在应该激活的时候被激活,但是它在数据库字段中发布了 0。这里的另一个问题是,它将所有用户的资金更新到同一个 0 条目,因此其 isset 的某些方式尚未正确设置。我相信我的bindValue编码正确,我真的不确定是否需要分解到php页面的POST,如果是这样,如果我必须使用该值,我该怎么做?另外,当我添加 WHERE userid = userid 来 UPDATE 时,游戏完全停止。任何帮助,即使是一个小修复,都将不胜感激。这是文件。预先感谢您帮助我了解 Ajax。游戏.jsmoney = 2000;function updateMoney() {   if ( pot <= 0 ){    if ( money <= 0 ){    document.getElementById("aaa").innerHTML = "Lost? Here's A Loan !!!";      money = 1000 ;}  }   document.getElementById("money").innerHTML = money;  }  function enterWager(){  // doMath function inside herevar x=parseInt(document.getElementById('textbox').value,10);  // Displays the textbox for placing a wager   if (money <= 0) {      x = 0 ; }document.getElementById("bet").innerHTML = parseInt(x,10);if(isNaN(x)||x < 1 || x > 250){document.getElementById("aaa").innerHTML = "You're Out Of Money!!!";}    document.getElementById("textbox").style.display = 'none';    document.getElementById("button").style.display = 'none';        function doMath() {  //   PVPCoinTransaction()   and   transferCoins()  are off right now. Plus 4 tests failed and are also off at end of function.   if (pot == 0){       countWagers = 0;   }      if (money <= 0) {      money = 0 ; }   if (x > money) {      x = money ; }  money = money - x;  pot = pot + x;                 }doMath()function updateDatabase() {   // POST test not working//    $.ajax({//     url: 'php/credits/credit.php', // //     type: "POST",//     dataType:'json', // add json datatype to get json//     data: ({money: 145}),  Do I put div here and how?//     success: function(data){//   I dont need to return anything, just update db field!//     }//}); 
查看完整描述

3 回答

?
Smart猫小萌

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 请求并检查是否发送了正确的负载。


查看完整回答
反对 回复 2023-07-14
?
慕尼黑8549860

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 发布到我的数据库中。


查看完整回答
反对 回复 2023-07-14
?
慕侠2389804

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();  

    }

    }

    ?>


查看完整回答
反对 回复 2023-07-14
  • 3 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信