我的表单会继续将表单数据粘贴两次以上到我的数据库中 我无法弄清楚为什么?
这是PHP代码
public function doQuery($sql){
$this->_reuslt = mysqli_query($this->_conn, $sql);
$this->_numRows = $this->_reuslt->num_rows;
}
function insert($data){
$dbo = database::getInstance();
$sql = "INSERT INTO ".$this->_table." (";
$sql .= implode(", ", array_keys($data)) . ') VALUES (';
$sql .= "'" . implode("', '", array_values($data)) . "')";
$dbo->doQuery($sql);
}
PHP IN ACTION
if(empty($validate->message)) {
$data = array(
'userFname' => $_POST['firstname'],
'userLname' => $_POST['lastname'],
'userEmail' => $_POST['email'],
'userPsw' => $_POST['password'],
);
$user->insert($data);
}
这是JS
$(document).ready(function(){
$("#create_account").on("submit", function(event){
event.preventDefault();
var that = $(this);
var firstname = $("#firstname").val();
var lastname = $("#lastname").val();
var email = $("#email").val();
var password = $("#password").val();
var re_password = $("#re_password").val();
var create_accountSbm = $("#create_accountSbm").val();
$("#return_new_Account").load('/blog/form', {
firstname:firstname,
lastname:lastname,
email:email,
password:password,
re_password:re_password,
create_accountSbm:create_accountSbm
});
});
});
答案 0 :(得分:1)
正如其中一条评论中所建议的那样,您必须停止submit
行动的传播。您还可以创建常规按钮(不输入提交类型) - 因此它只会执行您的代码。
现在,您从JS代码和form.submit进行一次调用,启动对表单action
字段中提到的url的第二次调用。
答案 1 :(得分:0)
这里我们有两种形式,有和没有停止事件传播。检查每种情况下会发生什么:
$(document).ready(function() {
$("input").on("click", console.clear);
$("#form1").on("submit", function(e) {
e.preventDefault();
});
$("#form2").on("submit", function(e) {
e.preventDefault();
e.stopPropagation();
});
$("form, div, body").on("submit", function(e) {
console.log(this);
});
$(document).on("submit", function() {
console.log('reached document');
return false;
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="some-div">
<form id="form1">
<input type="submit" name="s1" value="Save-1">
</form>
<form id="form2">
<input type="submit" name="s2" value="Save-2">
</form>
</div>