我试图将登录用户的得分保存到我的sql数据库中。我在HTML5和JavaScript中编写了一个简单的pong游戏。基本上我需要从pong.js文件中获取分数变量,并在用户点击页面上的按钮时将该分数写入数据库。我只是无法让它工作。我会以登录用户的身份点击按钮,我的游戏分数将更新为1(这只是一个测试),但我不会从我的服务器的php文件中获得任何类型的反馈。如何使用AJAX将javascript变量存储到我的sql数据库
这是我的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(),我知道这工作,因为我更新了我的分数变量表明Ajax_Call至少执行(该playerscore变量包含在pong.js中,如果你需要看到那个文件,我会发布它,但我不相信我需要)。
这是我的submitscore 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对象时,我没有对其他浏览器进行任何检查,如果您认为这是问题,请告知我)
如果你可以告诉我一个方向,或者尝试一下,或者至少有一个网站可以帮助我。这将非常感激。这是我的第一篇文章,如果我做错了,请让我知道。非常感谢您的帮助
说实话,我读的代码太多了。我认为,如果你要求发布反馈,我会建议缩进,有很多事情需要密码。我可能会再看看 – 2012-02-18 08:46:37