我有以下PHP / Ajax问题似乎无法找到目前相关的类似问题。我有一个网站,从表单成功发送电子邮件,但脚本的Ajax部分未正确调用。当事情正常工作时,应该发生的是用户点击提交,调用Ajax脚本进行表单验证。这部分工作,然后发送电子邮件,但失败的是,在发送电子邮件关闭提交窗口并说谢谢等后,不会调用Ajax脚本。
我认为我的问题是我在PHP中缺少一行代码来调用Ajax脚本的成功部分。
脚本如下:
PHP代码
<?php $emailTo = myemail@gmail.com'; $subject=$_REQUEST['subject']; $name=$_REQUEST['name']; $email=$_REQUEST['email']; $msg=$_REQUEST['message']; $body = "Name: $name \n\nEmail: $email \n\nMessage: $msg"; $headers = 'From: '.$name.' <'.$email.'>' . "\r\n" . 'Reply-To: ' . $email; mail($emailTo, $subject, $body, $headers); ?>
Ajax代码
$.ajax({
type: "POST",
url: "email.php",
data: params,
success: function(response){
if(response){
var responseObj = jQuery.parseJSON(response);
if(responseObj.ResponseData)
alert(responseObj.ResponseData);
}
ResetInput();
$('#submitButton').removeAttr('disabled');
ClosePopupWindow();
},
如果需要,完整的Ajax代码位于以下要点 - https://gist.github.com/4117065
答案 0 :(得分:2)
我建议你这样做来跟踪错误:
在php中:
if (mail($emailTo, $subject, $body, $headers)){
echo "success";
} else {
echo get_last_error();
}
在jq:
if(response == "success"){
//do your stuff
} else {
//track the error
alert(response);
console.log(response); // you can chose either way, console.log() is the new black xD
}
我最近和ajax / php合作很多,并且在大多数情况下ajax不起作用是因为php引发了某种愚蠢的错误:P
答案 1 :(得分:0)
在.php文件中测试邮件是否已发送错误(返回bool http://php.net/manual/en/function.mail.php)$response = mail(...
然后json_encode($response['ResponseData'] = $success);
在js中,您引用的是不存在的成员:ResponseData
答案 2 :(得分:0)
php脚本没有回显任何东西,所以响应为null。你可以在php中回复一些东西作为一个重新回复,代码将起作用