我正在尝试使用AJAX的联系表单。我尝试使用普通的javascript,下面是代码的重要部分:
function sendMail(evt){
var formdata = new FormData();
// here I prepare formdata
var xhr = new XMLHttpRequest;
xhr.open("POST", 'php/mailer.php', true);
xhr.onreadystatechange = function(){
if (xhr.readyState == 4 && xhr.status == 200){
// do something when succesfull, let's say success()
} else {
// do something when not, let's say fail()
}
}
xhr.send(formdata)
}
}
因此,当我在localhost上工作时,当我点击“发送”时,邮件不会被发送并且fail()被释放,当我在服务器上执行时,邮件被发送并且success()被释放。这对我来说很酷,也是可以理解的。
但是当我尝试使用jQuery并拥有这样的代码时:
function sendMail(){
$.ajax({
type: 'POST',
data: $(myForm).serialize(),
url: 'php/mailer.php'
}).done(function(){
// success()
}).fail(function(){
// fail()
});
}
然后在我的本地主机上,当我点击“发送”时,比没有发送邮件,但是来自done()的success()被释放。为什么这样,我错过了什么?