Проблема с jQuery-проверкой после отправки формы - PullRequest
1 голос
/ 26 декабря 2009

У меня есть форма, и перед ее отправкой я хочу проверить некоторые входные данные в базе данных. Идея: 1) отправить форму, 2) проверить значения, 3) показать ошибку или фактически отправить форму. Пример:

$(form).submit(function() {
  $.post('check.php', {
    values
  }, function(res) {
    // result I need before submitting form or showing an error
  });

  return false;
});

Теперь требуется некоторое время, прежде чем я получу результат (то есть не мгновенно), поэтому я вставляю return false внизу, предотвращая отправку формы, прежде чем я получу результаты $ .post и что-то сделаю это.

Проблема: после того, как я получил результаты от $ .post, и все оказалось в порядке, как я могу сказать сценарию продолжить отправку формы? Если я использую submit(), он просто вернется к этому сценарию проверки, создавая бесконечный цикл.

Есть идеи? Заранее спасибо и счастливого Рождества!

Ответы [ 3 ]

1 голос
/ 26 декабря 2009

Вы по сути отправляете форму дважды, если вы сделали это таким образом. Это кажется расточительным. Вместо этого просто запретите отправку формы и обрабатывайте значения асинхронно (как вы уже это делаете). С сервера примите данные, если это хорошо, и отклоните, если это не так. Нет необходимости отправлять форму, если вы уже отправляете данные на сервер для начала. Это немного избыточно.

1 голос
/ 26 декабря 2009

Попробуйте заменить кнопку отправки ссылкой, на которой есть щелчок мышью. Отправьте форму программно после этого. E.g.:

<a id="submit">Submit</a>

$($("a#submit").click(function() {
   $.post('check.php', {
          values
         }, function(res) {
               // result I need before submitting form or showing an error
         });
  if (condition) {
     $('[name=form_name]').submit();
  };
});
1 голос
/ 26 декабря 2009

Вы можете использовать логический флаг для этого:

var isValid = false;
$(form).submit(function() {
  if (isValid) return true;
  $.post('check.php', {
    values
  }, function(res) {
    if (res.valid) {
      isValid = true;
      $(form).submit();
    }
    // result I need before submitting form or showing an error
  });

  return false;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...