【发布时间】:2015-08-14 02:42:02
【问题描述】:
我想将来自用户的 cmets 存储在我的数据库中。当用户提交时,我不想将他们重定向到新页面。 我有以下代码,但它不起作用。
我的 HTML 代码:
<form id="formA" action="test.php" method="post" enctype="multipart/form-data">
<input id="commentData" name="commentData" type="text" >'
<input type="submit" value="toDb" id="toDB" name="toDB" /></form>
Javascript:
var frm = $('#formA');
$(document).submit(function(e) {
e.preventDefault();
$.ajax({
url: frm.attr('action'),
type: frm.attr('method'),
data: frm.serialize(),
success: function(html) {
alert('ok');
}
});
});
这是我的 PHP 文件:
//Connect to database server
mysql_connect("localhost", "user", "") or die (mysql_error ());
mysql_select_db("test") or die(mysql_error());
$strSQL = "SELECT * FROM comments order by RAND() LIMIT 5";
$rs = mysql_query($strSQL);
if (!$rs) {
echo 'Could not run query ' . mysql_error();
exit;
}
$dt1=date("Y-m-d");
if(isset($_POST['toDB'])){
$dataA = $_POST['commentData'];
$sql = "INSERT INTO comments(id, comment, datum)VALUES(DEFAULT,'$dataA', '$dt1')";
$result=mysql_query($sql);
}
mysql_close();
当我单击提交按钮时,它将停留在同一页面上并显示警报,但输入字段的数据未插入我的数据库中。当我删除 e.preventDefault() 数据进入数据库但页面重定向到 test.php
尝试了不同的东西,但无法弄清楚。 有人可以帮我吗? 提前致谢!
【问题讨论】:
-
把
var frm = $('#formA');放在$(document).submit(function(e) {旁边,请检查一次。 -
$dataA应进行消毒以防止注射。 php.net/manual/en/function.mysql-real-escape-string.php 还要注意mysql_,应该使用mysqli 或pdo,然后你可以使用prepared statements。如果你给datum一个默认时间戳,你就不必每次都插入日期。还有DEFAULT我以前没见过,但如果你有自动递增的字段,你不需要发送它。 -
感谢您的快速响应,但不幸的是它仍然无法正常工作。这些变化没有任何区别。
-
你加载了
jquery.min.js吗? -
检查您的 xhr 请求包含哪些发布数据。我用
.serialize()做了一个快速测试,它没有包含提交按钮的键或值,这是你的PHP 所依赖的。
标签: javascript php html mysql ajax