我有一个HTML表单:
<form method="post" id="input_form" onSubmit="return save_mail();">
<input type="text" value="enter your email" id="mail" name="mail"/>
<button type="submit" id="save_btn" >Sign up</button>
<div id="warning"></div>
</form>
javascript代码如下所示:
function validateEmail(email) {
var re = /\S+@\S+\.\S+/;
return re.test(email);
}
function wrongEmail() {
document.getElementById("warning").innerHTML="wrong email format";
}
function rightEmail() {
document.getElementById("warning").innerHTML="";
}
function save_mail() {
var pom=document.getElementById("mail").value;
if (validateEmail(pom)) {
$.post("php/sign_up.php", {mail : pom});
rightEmail();
alert("heey"); // if I remove this alert, it doesn't work on FF anymore
return true;
}
else {
wrongEmail();
return false;
}
}
这一切都适用于Chrome和Firefox,但如果我从我的JS代码中删除警报,它就不再起作用了。我不知道,这怎么可能。根据FF或Chrome没有错误。
答案 0 :(得分:0)
$.post
是异步的,所以发布后的所有代码都会在ajax请求完成之后直接执行,而不是在我认为你可能期望之后完成。
为了在ajax请求完成后执行代码,请使用延迟函数或$.ajax
的成功回调
$.post("php/sign_up.php",{mail: pom}, function(){
//this is where you execute code once the sign_up.php script has been called
})
答案 1 :(得分:0)
在jQuery Post中成功添加你的动作,jQuery推荐的风格是
var jqxhr = $.post( "example.php", function() {
alert( "success" );
})
.done(function() {
alert( "second success" );
})
.fail(function() {
alert( "error" );
})
.always(function() {
alert( "finished" );
});