如何使用AJAX将javascript变量存储到我的sql数据库中

How to use AJAX to store a javascript variable to my sql database

本文关键字:我的 sql 数据库 存储 变量 何使用 AJAX javascript      更新时间:2023-09-26

我正试图将登录用户的分数保存到我的sql数据库中。我用HTML5和javascript编写了一个简单的乒乓球游戏。基本上,我需要从pong.js文件中获取分数变量,并在用户点击我页面上的按钮时将该分数写入数据库。我就是无法让它发挥作用。我将作为登录用户点击按钮,我的游戏分数将更新为1(这只是一个测试),但我不会从服务器的php文件中得到任何类型的反馈。

这是我的Index.php文件:

    <?php 
    session_start(); 
    $_SESSION['score'] = 0;
    ?>
    <html>
    <head>
    <meta name = "description" content = "Josh Siegl's home web server"/>
    <meta name = "keywords" content = "home, web, server, pong, html5, game"/>
    <link rel="stylesheet" type = "text/css" href = "mycss.css" /> 
    <title> JOSH SIEGL HOME WEB SERVER </title>
    </head>
    <body>
    <div align = "center"> 
    <?php if(!isset($_COOKIE['ID_SERVER']))
    {
    echo '<form id = "signIn" action = "getuser.php" method = "post">
    UserName: <input type = "text" name = "username"  />
    Password: <input type = "password" name = "password" />
    <input type = "submit" name = "SIGNIN" value = "SIGN IN"/>  or    
    <a href = "register.html" id = "register" style="text-decoration:none"/> <i>       Register </i></a>
    </form>';
    }
    else 
    {
    ?>
    <p> <?php echo "WELCOME " . $_COOKIE['ID_SERVER'];} ?> <?php         if(isset($_COOKIE['ID_SERVER'])){echo '<a href = "logout.php">  logout</a>';} ?> </p>
    <h1 id = "GAMENAME"> PONG </h1>
    <canvas id="myCanvas" width="800" height="600"></canvas>
    <script type="text/javascript" src = "pong.js" id = "gamescript"></script>
    <div id = "status"></div>
    <script language = "JavaScript" type = "text/javascript">
    function Ajax_Call()
    {
playerscore = 1;
var hr = new XmlHttpRequest(); 
var url = "submitscore.php";
var keys = "score=" + playerscore; 
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
hr.onreadystatechange = function()
{
    if (hr.readyState == 4 && hr.status == 200)
    {
        var returndata = hr.responseText;
        document.getElementById("status").innerHTML = returndata;
    }
}
hr.open("GET", "submitscore.php?score="+playerscore, true);
hr.send();
document.getElementById("status").innerHTML = "posting..."; 
    }
    </script> 
    <input type = "submit" name = "submitscore" value = "POST SCORE" onclick =    "Ajax_Call();"></input>
    <br /> <p> This is a pong clone, created by Josh Siegl, hosted on a home web server. 
       This game was created in HTML5 and should run on most up to date browsers. </p>
    <br /> <p> I programmed this entire game in javascript and HTML5. The source code is publicly available, right click and hit inspect element </p>
    </div>     
    </body>
    </html>

submitscore按钮调用Ajax_Call(),我知道这是有效的,因为我更新了我的score变量,以显示Ajax_Call至少在执行(playerscore变量包含在pong.js中,如果你需要查看该文件,我会发布它,尽管我认为我不需要)。

这是我的submitcore php文件:

    <?php
    $q=$_GET['score'];
    $con = mysql_connect("localhost", "root", "");
    if (!$con)
    {
die(mysql_error());
    }
    $mydb = mysql_select_db('users', $con);
    if (!$mydb) {
    die ('Can''t use $con : ' . mysql_error());
}

    $sqlstatement = "UPDATE people
            SET score= $q WHERE username =$_COOKIE['ID_SERVER']";
if (mysql_query($sqlstatement, $con))
{
    echo "your score of: $q is now in the database";
}
else
{
die(mysql_error()); 
}
    mysql_close($con);  
    ?>

(这只是为了练习,所以不要试图破解我的数据库;)无论如何,我一直在尝试很多不同的东西,所以这就是为什么代码看起来有点草率的原因,我想做的就是在用户点击按钮时将我的得分变量提交到数据库。(我正在使用firefox测试我的网站,所以在这一点上,为了保持简单,我在创建新的xmlhttprequest对象时没有对其他浏览器进行任何检查。如果你认为这是问题所在,请告诉我)

如果你能告诉我一个前进的方向,或者一些可以尝试的东西,或者至少一个可以帮助我的网站。非常感谢。这是我的第一篇帖子,所以如果我做错了什么,请告诉我。非常感谢您的帮助

标题中的问题答案非常简单:与任何其他数据完全相同。PHP对AJAX一无所知。从PHP的角度来看,没有AJAX、浏览器或机器人程序,只有带数据的常规HTTP调用。因此,PHP必须处理这些数据并将其存储在数据库中(或拒绝),这对所有人来说都是一样的。

问题正文似乎更像是一篇文章,而不是一个问题。我养成了堆叠式写作的习惯,所以不去读这样的小说。只有我能说,这样长的帖子往往受到调试不足的琐碎启发。

您似乎需要Firebug作为当前的调试工具。这个出色的Fitrefox插件的Net选项卡将显示我的js发出的HTTP请求和PHP的响应。所以,它会让你知道出了什么问题。