我已经创建了一个表单来注册一个新帐户。在这个表格中,我正在检查所选择的电子邮件是否可用,但我使用web服务检查它需要几秒钟。 让我们来看看这美丽的方法:同步ajax方法
function validateEmail(email) {
var re = /^(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
if(re.test(email) == true) {
var status;
$.ajax({
type: "POST",
url: "ajax/checkEmail.php",
data: "email="+email,
async: false,
cache: false,
timeout: 30000
}).done(function(data) {
$(".spinner").hide();
status = msg;
});
return status;
}
}
我已经被迫把异步为假,除非该功能没有等到我的Ajax来完成,并且返回任何内容。有了这个async:false,他会这样做,但是我的整个前面都被阻塞,直到加载结束(我的鼠标被阻塞,我无法填充任何其他字段)。
我敢肯定,我不是第一个遇到这种情况,所以我指望你的队友:-)!
谢谢!
2014-02-28
banibanc
+1
'async:false' - no! - 你需要一个异步请求,所以如果在后端出现故障,你不会完全锁定客户端! –
+0
因为异步操作*没有返回*。你给他们*待办*功能,称为*回调*。 –