2013-02-09 4 views
1

Когда моя форма будет отправлена, php вернет false, если ей не нравятся значения, содержащиеся в field1 и field2. Если это похоже на эти поля, то оно вернет true. Если пользователь отправляет форму, а php возвращает false, появляется предупреждение. После закрытия окна предупреждения, если пользователь немедленно вводит новые (хорошие) данные в эти поля и снова отправляет форму, форма представляется как-то дважды. Зачем? Как я могу это исправить?Почему jquery представляет мою форму ajax дважды?

$("form#myForm").on('submit',function() 
{ 
    $.ajax(
    { 
     type: "POST", 
     url: 'myfile.php', 
     dataType: 'html', 
     data: 
     { 
      field1:$("input[name=field1]").val(), 
      field2:$("input[name=field2]").val() 
     }, 
     success: function(data) 
     { 
      if(data == false) 
      { 
       alert('hello world'); 
      } 
      else 
      { 
       // stuff 
      } 
     } 
    }); 
    return false; 
}); 
+0

Кажется, что работает на [jsbin] (http://jsbin.com/ujinon/3/edit), он делает только один запрос на подачу. Чтобы запустить его на jsbin, я изменил 'POST' на' GET', установил url в '#' и заменил 'data == false' на' true'. HTH –

ответ

1

Поскольку вы делаете сообщение ajax, вам необходимо отключить поведение кнопки отправки по умолчанию. См http://api.jquery.com/event.preventDefault/

+2

Это не работает. –

+0

Возвращение false имеет тот же эффект, http://api.jquery.com/submit/ –

1

добавить этот код после того, как ниже, перед тем return false

$('#myForm').unbind('submit'); 
return false; 
4

Тот же вопрос был задан в 2014 году (jquery ajax form submits twice).

e.preventDefault() на собственных работах для кнопок и якорных ссылок, но не работал для меня при отправке формы (идентичной коду Нэнси выше).

Я должен был добавить e.stopImmediatePropagation(); перед моим сообщением ajax. Это остановило вызов ajax от подачи дважды.

+0

ОП задал вопрос, почему, хотя мне тоже интересно – marcospgp

+0

Я не знаю, почему это происходит, к сожалению. Нэнси спросила: «Почему? Как я могу это исправить?», Поэтому мне удалось ответить, как это исправить, но не почему. – Robini

+0

Я понял, почему это происходит с моим кодом. Теги javascript на дублировались, дважды запуская сценарий (и, таким образом, прикрепляя крючок). – marcospgp

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