jQuery帖子不是每次woking firefox

时间:2015-08-23 09:59:46

标签: jquery html firefox post

我有一个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没有错误。

2 个答案:

答案 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" );
 });