0

クリックするとhtmlファイルにボタンがあり、2つのことを行う必要があります。(データベースにデータを挿入してページをリロードする) そこで、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);

qただ空で、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 に答える