1

それで、ajaxを使用してPHPファイルにPOSTする方法を見つけました。私がやろうとしているのは、名前と死因を PHP スクリプトに POST し、Mysql を使用してユーザーをデータベースに追加することです。ただし、送信ボタンを押してスクリプトを実行すると (ページの別の場所にあり、正常に動作します)、画面が白くなり、DB には何も追加されません。

このページはhttp://rhoiyds.com/deathnote/index.phpでホストさ れています。自分で試してみてください。矢印キーを使用して本の最後のページまでスクロールし、何かを追加します。また、検索機能で同じ種類のスクリプトを使用していますが、機能しますが、追加機能は機能しません。助けてください?私はこのコード行について疑念を抱いています:

xmlhttp.send("name="+document.getElementById("nameadd").value+"&cod="+document.getElementById("codadd").value);

2 番目の + 記号が必要で、& は引用符内にある必要がありますか? それでも、画面が空白になるとは思いません...

編集: コードの追加:

<script>
function loadXMLDoc()
{
var xmlhttp;
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("result").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("POST","check.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("name="+document.getElementById("name").value);
}
</script>
<script>
function write()
{
var xmlhttp;
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("result").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("POST","write.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("name="+document.getElementById("nameadd").value+"&cod="+document.getElementById("codadd").value);
}
</script>
</head>

上のスクリプトはデータベースへの書き込み用です 下のスクリプトはDB内の名前をチェックするためのものです

以下は、ユーザーが入力するフォーム (実際にはフォームではありません) です。

    <div class="content"><div class="name">Name: <br/> Cause Of Death: </div>
<div class="cod"><textarea type="text" name="nameadd" id="nameadd" maxlength="25"
 placeholder="Input Name" required>
</textarea> <br /> <textarea type="text" name="cod" id="codadd" maxlength="130" rows="4" placeholder="Cause of Death" required>
</textarea> <br />
<button type="button" onclick="write()" return false>Submit</button></div></div>';

名前をチェックするための PHP スクリプト

    /* create a prepared statement */ if ($stmt = mysqli_prepare($link, "SELECT cod FROM deathnote WHERE victim=?")) {

        /* bind parameters for markers */
        mysqli_stmt_bind_param($stmt, "s",  $_POST['name']);

        /* execute query */
        mysqli_stmt_execute($stmt);

        /* bind result variables */
        mysqli_stmt_bind_result($stmt, $cod);

        /* fetch value */
        mysqli_stmt_fetch($stmt);

      if ($cod=="") {   $cod= $_POST['name'] . " is not in the deathnote.";   }

      echo $cod;

        /* close statement */
        mysqli_stmt_close($stmt); }

    /* close connection */ mysqli_close($link);

PHP SCRIPT FOR ADDING NAMES

$sql="INSERT INTO deathnote (victim, cod)
VALUES
('$_POST[name]','$_POST[cod]')";

if (!mysqli_query($con,$sql))
  {
  die('Error: ' . mysqli_error($con));
  }


mysqli_close($con);

echo "success";
4

2 に答える 2

0

問題は私の AJAX 関数にあるのではなく、誰かが SQL によって私のデータベースに CSS ルールが挿入されたことが原因でした。:(

于 2015-01-12T06:15:01.937 に答える
0

フォームが実際に送信されないようにする必要があります。最も簡単な修正は、これを変更することです。

<button type="button" onclick="loadXMLDoc()">Submit</button>

これに:

<button type="button" onclick="loadXMLDoc(); return false">Submit</button>

他にも問題があるかもしれませんが、まずそれを試してください

于 2013-11-15T10:06:32.290 に答える