php存档不止一次被调用

时间:2017-08-20 17:31:28

标签: jquery html post

好吧,我有这个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>

有人可以帮助我吗?

1 个答案:

答案 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
});

但是,请谨慎使用,否则用户可能需要刷新页面,以便他们在尝试提交后可以在表单上修复某些内容。