php jQuery-check在提交表单后出现问题

rpppsulh  于 2022-12-25  发布在  PHP
关注(0)|答案(3)|浏览(140)

我有一个表单,在它提交之前,我想在数据库中检查一些输入。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(),它只会将表单返回到check脚本,从而产生一个无限循环。

qvtsj1bj

qvtsj1bj1#

如果你这样做的话,你实际上是提交了两次表单。这看起来很浪费。相反,只要阻止表单提交,并异步处理值(就像你已经做的那样)。从服务器,如果数据是好的,就接受它,如果不是,就拒绝它。如果你已经开始向服务器发送数据,就没有必要提交表单。这有点多余。

xv8emn3q

xv8emn3q2#

您可以为此使用布尔标记:

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;
});
uoifb46i

uoifb46i3#

尝试将提交按钮替换为带有onclick的链接。然后通过编程方式提交表单。例如:
第一个月

$($("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();
  };
});

相关问题