我正在尝试使用html form + jquery + php
更新数据库当我点击表单上的“提交”按钮时,它会工作,但每次点击都会在数据库中添加两个相同的记录。
我无法找出出错的地方,因此我发布了我在这里使用的整个脚本。如果有人能找到问题,那么请指出。
以下是我正在使用的脚本
HTML
<div id="result" class="results"></div>
<form id="person-form" class="person-form" method="post">
<fieldset>
<legend><strong>Add a new member</strong></legend>
<table>
<tr><td><label for="Name" >Name</label></td>
<td colspan="2"><input type="text" name="name" value="Enter the Name, 55 char max." /></td></tr>
<tr><td><label for="email">Email</label></td>
<td colspan="2"><input type="text" name="email" value="Enter the email" /></td></tr>
<tr><td><label for="subscribe">Subscribe</label></td>
<td><input type="checkbox" name="subscribe" value="Yes" /></td>
<td><input type="submit" value="Add member" id="add-member" class="add-member"/></td></tr>
</table>
<div style="clear:both;"></div>
</fieldset>
</form>
的jQuery
$("#add-url").live("click", function() {
var name = $('input[name=name]').val();
var email = $('input[name=email]').val();
var subs = $('input[name=subscribe]:checkbox:checked').val();
var data = 'name='+name+'&email='+email+'&subs='+subs;
$.post(add_member_script.ajaxurl, data, function(data) {
$('#results').html(data);
});
return false;
});
和PHP
$connect = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
if (!$connect){
die('Could not connect: ' . mysql_error());
}
mysql_select_db(DB_NAME, $connect);
if (empty($_POST['name']) || empty($_POST['email'])){
echo 'enter some value';
} else {
if($_POST['subs']== 'yes') {
$sql="INSERT INTO $table (name, email, subs) VALUES ('$_POST[name]','$_POST[email]','$_POST[subs]')";
} else {
$sql="INSERT INTO $table (name, email) VALUES ('$_POST[name]','$_POST[email]')";
}
if (!mysql_query($sql,$con)){
mysql_error();
} else {
list_links_table ();
}
mysql_close($con);
die();
}
答案 0 :(得分:0)
看起来表单可能是通过AJAX和“正常”方式提交的。要确保将onsubmit="return false"
添加到表单标记:
<form id="person-form" class="person-form" method="post" onsubmit="return false">
或者,您可以删除所有JS并允许表单正常提交,并查看复制是否仍然存在。
答案 1 :(得分:0)
正如评论中所述,我建议您使用<input type="button" value="Add member" id="add-member" class="add-member"/>
而不是“type = submit”,以确保表单永远不会通过HTML上传,但仅使用Javascript代码:)< / p>
答案 2 :(得分:0)
最后我发现它,我在上面发布的脚本中完全没有错误。问题是我注册了两次WordPress钩子,因为它每次点击都发送2个请求。我删除了它,问题解决了。感谢@Erenor Paz,@ Mark Eirich和@slugonamission的亲切努力。随后我完成了我的第一个WordPress插件:)