2

ajaxphpとmysqlを使用してWebサイトのコメントシステムを作成しようとしています。このために、コメント(記事名に設定されます)をSQLデータベース(およびコメントやその他のものに設定されます...)にアップロードするためにクリックされたボタンのIDを送信します

現在使用しているシステムはかなり奇妙です。jsFiddleにコピーしてサーバー上の正しいphpファイルにリンクすると、正常に動作し、ボタンのIDがデータベースにアップロードされます。ただし、アップロードすると私のウェブサイトとまったく同じことは機能しません...これが私が持っているものです:

Htmlフォーム:

<form id="addCommentForm"> 
<input type="email" name="email" onchange="checkEmail();" id="email" /> </br>
<div>
<p id="emailerror"> </p>
</div> </br>
<input type="text" name="username" id="username" /> </br>
<input type="text" name="content" id="content" /> </br>
<input type="Button" value="submit" id="Test" onclick="commentSend(this.id);return       false;"/>
</form>

javascript(外部):

function commentSend(clicked_id) 
{

var email = document.getElementById("email").value //gets the user's email
var username = document.getElementById("username").value //gets the user's username
var content = document.getElementById("content").value //gets the comment content
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.open("GET","commentUpload.php?email=" + email + "&username=" + username +    "&content=" + content + "&articleName="+ clicked_id,true);
xmlhttp.send();

return false;

}

そしてphp:

<?php 
$con = mysql_connect("myserver","myusername","mypassword");
mysql_select_db("mydatabase", $con);

$articleName = mysql_real_escape_string($_GET['articleName']);
$email = mysql_real_escape_string($_GET['email']);
$username = mysql_real_escape_string($_GET['username']);
$content = mysql_real_escape_string($_GET['content']);

if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

$query = "INSERT INTO Comments (id, article, email, name, body)    VALUES (NULL, '" . $articleName ."', '" . $email ."', '" . $username . "', '". $content . "')";

mysql_query($query);

mysql_close($con);

?> 

私が考えることができる唯一のことは、変数this.idを外部のjavascriptファイルに渡す際にエラーが発生することです。これは、データベースにアップロードされない唯一の値だからです...

誰でもアイデア!?

4

1 に答える 1

0

クエリ文字列で使用するために変数をエンコードしていません。

それを解決するためにできることは、encodeURIComponent(すべての値に対して...)次のように使用することです。

var content = encodeURIComponent(document.getElementById("content").value);
于 2012-07-10T22:05:39.220 に答える