I am using jQuery 1.7 and I use async:false
for my AJAX requets, but I've learned that this function is deprecated.
I need to use callback but this doesn't work:
$("#form").submit(function(e) {
var cnf;
$.ajax({
type: "POST",
url: 'page.php',
data: $('#form').serialize(),
async: true,
success: function(responseText) {
if(responseText.indexOf('err') != -1) {
cnf = "error";
}
else {
cnf = "success";
}
return callBack( cnf );
},
error: function() {
cnf = "error";
return callBack( cnf );
}
});
if(cnf == "success")
{
alert('ok');
}
});
The HTML:
<form id="form">
<input type="text" name="email">
<input type="submit">
</form>
If I use async: false
this works. Using callBack I see the solution here: wait for a jquery ajax callback from calling function
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…