我正在尝试获取使用ajax发送到PHP邮件页面的电子邮件表单的响应代码。如果邮件发送成功,则回显1否则为0。
这是我从
发送的方式$('form.ajax-form').on('submit', function(evt){
evt.preventDefault();
var $form = $(this);
$.ajax({
url: $form.attr('action'),
method: $form.attr('method'),
data:$form.serialize(),
success: function(response){
if (response == '1' ) {
M.toast({html: 'I am a toast!'});
}else if (response == '0') {
M.toast({html: 'I am not a toast!'});
}
},
});
});
根据响应,我想执行M.toast({html: 'I am a toast!'});
,但是即使PHP邮件程序回显1或0,我也无法获得响应。邮件程序回响响应需要4秒钟。我已经尝试过delay : 4
仍然无法获得答复。我究竟做错了什么 ?请帮忙。谢谢。
更新。
这是XHR的回复。
答案 0 :(得分:1)
尝试以下代码:
$('form.ajax-form').on('submit', function(evt){
evt.preventDefault();
var $form = $(this);
$.ajax({
url: $form.attr('action'),
method: $form.attr('method'),
data:$form.serialize(),
success: function(response){
if ($.trim(response) === '0') {
M.toast({html: 'I am not a toast!'});
}else{
M.toast({html: 'I am a toast!'});
},
});
});
答案 1 :(得分:1)
这是工作代码。
$('form.ajax-form').on('submit', function(evt){
evt.preventDefault();
var $form = $(this);
$.ajax({
url: $form.attr('action'),
method: $form.attr('method'),
data:$form.serialize(),
async:false,
success: function(response){
if ($.trim(response) === '1') {
M.toast({html: 'I am a toast!'});
}else if ($.trim(response) === '0') {
M.toast({html: 'I am a not toast!'});
}
},
});
});
不得不修剪响应并设置async:false,并且现在可以正常工作。