0

单击后,我的 html 文件中有一个按钮,我需要做两件事。(将数据插入数据库并重新加载页面)所以我在 onclick 事件中调用了一个 javascript 函数。

这是javascript文件中的函数:

function grandFinale()
{
     if (window.XMLHttpRequest)
     {// code for IE7+, Firefox, Chrome, Opera, Safari
         xmlhttp=new XMLHttpRequest();
  }
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
 {
  //document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
 }
}
xmlhttp.open("GET","insert.php?q=",true);
xmlhttp.send();
document.location.reload();

}

这是上面提到的insert.php文件

<?php
    $con = mysql_connect("localhost","uname","password");
if (!$con)
  {
   die('Could not connect: ' . mysql_error());
  }

mysql_select_db("SnakeDB", $con);

$sql="INSERT INTO masterTable (Name, Score) VALUES ('$_GET[name]','$_POST[txtScore1]')";

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "1 record added";

mysql_close($con);
?>

这是 HTML 文件的一部分,其中包含我要更新到数据库的位置

<div class="modal-body">
 <p>You scored :: </p><p id="txtScore1"></p>
<input type="text" placeholder="Your Name" id="name"> </div>

问题是数据库没有更新!!只有重新加载发生。请建议我一个解决方案

4

2 回答 2

3

据我所知,您没有将参数发送到脚本吗?!

将名称字段也附加到

xmlhttp.open("GET","insert.php?q=&name=" + encodeURIComponent(document.getElementById('name').value),true);

给定的代码未经测试,但应该以这种方式工作。

于 2012-08-05T11:54:13.107 回答
1

您的 javascript 中的错误是,您没有通过 ajax 向脚本发送任何值。

xmlhttp.open("GET","insert.php?q=",true);

qist 只是空的,name并且txtScore1没有设置。

另外,在您的 SQL 语句中,您正在混淆 GET 和 POST 值。

$sql="INSERT INTO masterTable (Name, Score) VALUES ('$_GET[name]','$_POST[txtScore1]')";

应该写成:

   $sql="INSERT INTO masterTable (Name, Score) VALUES ('{$_GET['name']}','{$_GET['txtScore1']}')";

警告,在将数据插入数据库之前,您应该始终检查 GET 或 POST 数据!

您用 jQuery 标记了您的问题,但您没有使用它。你应该。它会将您的 javascript 压缩到几行 + 不需要重新加载页面!

请参阅http://api.jquery.com/jQuery.getJSON/

于 2012-08-05T11:59:34.997 回答