问题在于
$.ajax请求是异步的,需要一段时间才能完成。因此,该函数会继续执行并在成功执行事件之前返回false。
为了解决这个问题,您可以
async: false为AJAX调用添加设置,但是这将暂停执行,直到AJAX调用返回。
另一个解决方案是创建一个隐藏输入,形式为
valid:
<input type="hidden" name="valid" value="false" />
然后在submit函数中但在ajax调用之前,创建对from的引用
var $form =$(this)。然后,如果AJAX调用返回有效值,请更改此隐藏输入的值,然后再次提交表单:
$('input[name="valid"]').val('true');$form.submit();然后,在submit函数的最后,如果隐藏输入的值为true,则仅返回false:
if ($('input[name="valid"]').val() == 'false') { $.ajax({ ... }); // changes the value of the hidden input from false to true return false;}


