为什么后续表单提交不起作用?

时间:2019-10-09 12:23:15

标签: jquery ajax events

我正在进行AJAX表单验证。这里的逻辑是,首先将所有字段都发送到服务器,如果它响应“确定”,则表单提交将通过submit()函数进行。

验证成功存储在validate隐藏的输入中。一切都很好,脚本会询问服务器,然后按validated打印console.log,但不会提交表单。我用Google搜索了e.returnValue = true;的把戏,但没有帮助。

$(document).ready(function() {
  $('form.validate').on('submit', function(e) {
    var $form = $(this);
    var $submit = $form.find('input[type=submit]');
    var $validate = $form.find('input[name=_validate]');
    if ($validate.length > 0 && $validate.val() == 'success') { // already validated
      e.returnValue = true;
      console.log('validated');
      return true; // submit form
    }

    e.preventDefault();

    if ($validate.length == 0)
      $form.append('<input type="hidden" name="_validate" value="asking" />');

    $validate = $form.find('input[name=_validate]');
    var params = $form.serialize();

    $.ajax({
      url: $form.attr('action'),
      method: 'post',
      data: params
    }).then(function(response, statusText, xhrObj) {
      var json = JSON.parse(response);
      if (json._status != 'ok') {
        // print errors
      } else {
        $validate.val('success');
        $form.submit();
      }
    }).catch(function(data) {
      alert('Error occured');
    });
  });
});

0 个答案:

没有答案