Бесконечный цикл отправки формы с использованием события jquery - PullRequest
13 голосов
/ 22 марта 2012

Код застревает в цикле, когда я пытаюсь поймать отправку формы. Цель состоит в том, чтобы заменить значение формы, прежде чем оно выходит.

$('form').submit(function(e){
   e.preventDefault();
   $.ajax({
      type: "POST",
      url: 'convert.asp',
      data: $('form').serialize(),
      success: function(response){
         $('input[name="field1"]').val(response);
         $('form').submit();
      }
   });
   return false;
});

У кого-нибудь есть идеи?

ОБНОВЛЕНИЕ: Первоначально я связывал его с событием нажатия кнопки, и оно работало, но я хотел сохранить ключевой элемент [ввод] кнопки отправки. Видя, что код немного нелогичен, будет ли лучше поймать нажатие клавиши?

Ответы [ 3 ]

45 голосов
/ 22 марта 2012

Я предполагаю, что ваш ajax - это попытка проверить форму перед ее окончательной отправкой. В этом случае просто отмените функцию проверки перед отправкой формы.

  success: function(response){
     $('input[name="field1"]').val(response);
     // Add unbind to remove validations
     $('form').unbind().submit(); 
  }
6 голосов
/ 22 марта 2012

В случае успеха вы запускаете еще одну отправку ...

$('form').submit(function(e){
   e.preventDefault(); // redundant,  you return false in the end. <<<===
   $.ajax({
      type: "POST",
      url: 'convert.asp',
      data: $('form').serialize(),
      success: function(response){
         $('input[name="field1"]').val(response);
         $('form').submit(); // <=== delete this! <<<<=================
      }
   });
   return false;
});
3 голосов
/ 22 марта 2012

Вы отправляете свою форму, запрещаете отправку только для отправки формы, которая не может быть отправлена ​​...: -D

...