好吧,我有这个jquery帖子:
$('.form-submit').click(function(){
var form = $(this).attr('data-form');
$("#"+form).submit(function(e) {
e.preventDefault();
$.ajax({
url: "../assets/action/action.php",
type: "POST",
data: new FormData(this),
contentType: false,
cache: false,
processData:false,
success: function(data)
{
$(".return-post-msg").html(data);
}
});
});
})
问题是,它的工作正常,但如果我再次点击button.form-submit,则jquery通常被调用一次但是action.php文件被调用两次,如果我再次点击,则3x ... if clcik againx ..我在action.php中的所有内容
echo "<script> alert('".$method." aaaaa'); </script>";
检查文件被调用的次数......
这是HTML:
<form id="create_requisite">
<input type="hidden" name="method" value="create_requisite" />
<div class="modal-heading"> <!-- Start of modal-heading -->
<h3>Create Requisite</h3>
</div> <!-- End of modal-heading -->
<div class="modal-body"> <!-- Start of modal-body -->
<div class="form-group"> <!-- Start of form-group -->
<label>Requisite Name</label>
<input type="text" class="form-control input-primary" name="name_requisite" />
</div> <!-- End of form-group -->
</div> <!-- End of modal-body -->
<div class="modal-footer"> <!-- Start of modal-footer -->
<span class="return-post-msg"></span>
<button class="btn btn-default form-submit" data-form="create_requisite">Create</button>
</div> <!-- End of modal-footer -->
</form>
有人可以帮助我吗?
答案 0 :(得分:1)
您正在收听点击事件和提交事件,这可能导致事件多次触发。相反,只需听取提交事件。
$(this).attr('data-form').on('submit', function(e) {
// make your ajax call
});
您还可以在声明事件处理程序时使用.one()
,以便它只能处理一次事件。
$(this).attr('data-form').one('submit', function(e) {
// make your ajax call
});
但是,请谨慎使用,否则用户可能需要刷新页面,以便他们在尝试提交后可以在表单上修复某些内容。