【发布时间】:2014-07-30 10:20:50
【问题描述】:
我在做什么
我正在使用 jquery 在将表单发送到服务器之前对其进行验证。
我正在验证每个输入,如果其中任何一个返回 false,我会调用 event.preventDefault() 并显示错误。(如果返回 true,我什么也不做......)
问题
它工作正常,脚本总是在表单发送之前运行,但现在我正在验证电子邮件,使用ajax - 检查电子邮件是否已经在数据库中或域是否存在......但是当ajax 开始时,表单不会等到它完成并在 ajax 完成和输入验证之前发送自己。
可能有一些解决方案
我可以调用event.preventDefault(),在验证完成并返回true后,我可以尝试通过unbind撤消preventDefault perhabs,然后通过jquery再次提交表单submit。
或者也许我可以做onsubmit="checkInputs();",它应该等到它返回真或假...
解决方案 - 改编自用户Mirage接受的答案
function validate(){
$.ajax({
url: 'http://google.nl',
async: false,
type: "POST",
data: {test:'request'},
success: function(data){
console.log(data);
}
});
return data; // important
}
【问题讨论】:
-
ajax 是异步的,尝试通过添加 async: false 使其同步
标签: javascript jquery ajax