Javascript 为什么jqueryajax要多次提交表单?
我读过: 这没用 如果我在表单上键入一些内容并单击submit按钮,那么它将发送一个请求。第二次,如果我键入某个内容并单击它,它将发送两个请求。第三次发送三个请求,以此类推。为什么会这样?我在jquery代码中犯了什么错误吗 这是我的密码: index.php=>Javascript 为什么jqueryajax要多次提交表单?,javascript,php,jquery,ajax,forms,Javascript,Php,Jquery,Ajax,Forms,我读过: 这没用 如果我在表单上键入一些内容并单击submit按钮,那么它将发送一个请求。第二次,如果我键入某个内容并单击它,它将发送两个请求。第三次发送三个请求,以此类推。为什么会这样?我在jquery代码中犯了什么错误吗 这是我的密码: index.php=> <div id="id_div_1" class="cl_div_comment_container"></div> <form id="id_form_1" method="POST"> <
<div id="id_div_1" class="cl_div_comment_container"></div>
<form id="id_form_1" method="POST">
<input type="hidden" value="1" name="nm_hidden_post_id">
<textarea class="cl_textarea_comment" style="resize:none;" rows="1" cols="50" name="nm_comment_content"></textarea>
<input class="cl_submit_comment" type="submit" value="Comment" name="nm_submit_comment">
</form>
save-comment.php=>
<?php
if (session_id() == '') {
session_start();
}
echo json_encode($_POST);
?>
试试
一个
然后打开
$("#id_form_1").one('submit', function (e) {
e.preventDefault();
frm_serialized = $(this).serialize();
console.log(frm_serialized);
$.ajax({
url: "save-comment.php",
method: "POST",
data: frm_serialized,
success: function (data) {
console.log(data);
$('div#id_div_' + frm_id_splitted_2).append(data);
}
});
});
同样无需进行submit
bind
只需序列化最近的表单并调用ajax
。您在内部绑定事件,事件执行多个绑定您在为单击按钮上的
事件的代码中注册表单提交
的事件。因此,每次单击该按钮时,它都会一次又一次地添加事件
这应该足够好了
$(document).ready(function(){
$('input[name="nm_submit_comment"]').on('click',function(e){
e.preventDefault();
var frm = $(this).closest("form");
var frm_id = frm.attr("id");
var frm_id_splitted = frm_id.split("_");
var frm_id_splitted_2 = frm_id_splitted[2];
var frm_serialized = frm.serialize();
$.ajax({
url: "save-comment.php",
method: "POST",
data: frm_serialized,
success: function(data) {
console.log(data);
$('div#id_div_' + frm_id_splitted_2).append(data);
}
});
});
});
您可以尝试以下方法:
$(document).off().on("click","#submit",(function(e) {
e.preventDefault();
}
你可以避开这条线$(frm).on('submit',函数(e){}每次单击后添加一个新的表单提交处理程序每次ajax调用也会在每次单击时再次评估相同的js文件。因此,两个单击处理程序和两个ajax调用,然后是三个,然后是四个,等等……无需将submit
bind
justSerialized
序列化为最近的表单并进行ajax调用。太好了!我有相同的issue:在datatable按钮单击中提交表单。每次执行单击时,提交事件都会增加。现在,有了这个解决方案,它工作得很好!多亏了这个,我从头部拔出了很多头发。我也有表单。提交内部单击事件,它在单击时一直在复制。我吸取了教训。这非常有效对我来说,点击
会打开一个模式窗口,然后在该模式中有一个表单供用户提交
。因此('submit')上的被更改为one('submit')
,以便它工作
$(document).off().on("click","#submit",(function(e) {
e.preventDefault();
}