JQuery .post提交两次

时间:2013-09-10 14:08:33

标签: jquery ajax post

我试图阻止这个JQuery POST调用提交两次。尝试了几种不同的变形,但完全不理解。

我见过类似的问题,但他们只说使用unbind,而不是为什么或如何使用不同的场景。

$('.submit').click(function(){
    if (error != 1 && submitted != 1 && emailError != 1) {
        $(this).css('cursor', 'default');
        $(this).fadeTo(0, 0.50);
        submitted = 1;
        if($(this).parents('form').hasClass('ajaxSend')) {

            var url = $(this).parents('form').attr('action');

            var fields = {};
            $(this).parents('form').find(':input').each(function(){
                var name = $(this).attr('name');
                var value = $(this).val();
                fields[name] = value;
            });

            $.post(url, fields).done(function(data){
                $(".statusMessage").html(data);
                $('.modal, .modalClose').css('margin-top' , 120 + $(document).scrollTop() + 'px');
                $('.modal, .modalClose').hide();
                $('.statusMessage, .modalClose').fadeTo('fast', 1);
                $('.modalCover').fadeTo('fast', 0.80);
            });

            $('.submit').unbind('click').submit();
            return false;

        }
    }
});

2 个答案:

答案 0 :(得分:1)

如何禁用提交按钮!

$('#form').submit(function(){

   var button = $('#submit');

   $.ajax({
     url: '',
     type: 'post',
     dataType: 'html',
     success: function(data){
       // if OK
       button.prop('disabled',false);
     },
     beforeSend: function(){
         button.prop('disabled',true);
     },
     error: function() {}

   });

   return false;

});

答案 1 :(得分:0)

您应该在表单提交而非单击按钮上执行此操作:

$("#my-form").on('submit', function(e){

  //do ajax stuff

  e.preventDefault(); //Stop form submitting via browser default functionality
});