2016-10-21 4 views
0

Форма Ajax отправляется дважды по какой-либо причине, даже используя preventDefault() и return false.Форма Ajax, отправляющая дважды

<script type="text/javascript"> 
    $("#form_codes").submit(function(e) { 
     e.preventDefault(); 
     $.ajax({ 
      data: $('#form_codes').serialize(), 
      type: 'POST', 
      url: '{{url('save_code')}}', 
      success: function(msg) { 
         $('#product_codes > tbody:last-child').append('<tr><td>' + $('#code').val() + '</td><td>' + $('#description').val() + '</td></tr>'); 
         $('#code').val(''); 
         $('#description').val(''); 
        }, 
      error: function(msg) { 

        } 
     });   
     return false; 
    }); 
</script> 
+0

И вы имеете только 1 форму в своем HTML с 'id =" form_codes "' right? – vaso123

+0

Возможно, это связано с событием click. – Beginner

+1

В вашем вопросе отсутствует контекст, но я предполагаю, что вы просто вызываете этот фрагмент дважды –

ответ

1

Попробуйте добавить e.stopImmediatePropagation() к представить событие, так как он предотвращает любое другое событие от выполнения так что это может остановить вторую отправку формы.

<script type="text/javascript"> 
       $("#form_codes").submit(function(e) { 
        e.preventDefault(); 
        e.stopImmediatePropagation(); 
        $.ajax({ 
         data: $('#form_codes').serialize(), 
         type: 'POST', 
         url: '{{url('save_code')}}', 
         success: function(msg) { 
          $('#product_codes > tbody:last-child').append('<tr><td>' + $('#code').val() + '</td><td>' + $('#description').val() + '</td></tr>'); 
          $('#code').val(''); 
          $('#description').val(''); 
         }, 
         error: function(msg) { 

         } 
        }); 

        return false; 
       }); 
</script> 
0

Оказывается, в моем шаблоне лопатка двигателя я был давая мой сценарий дважды (в том числе и эффективно его дважды.)

Функция работает отлично, и только представляет один раз в настоящее время.

Смежные вопросы