1

我有以下 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({
   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

4

3 回答 3

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

于 2012-11-20T10:54:15.547 回答
0

在 .php 文件中测试邮件是否已发送 witought 错误(返回 bool http://php.net/manual/en/function.mail.php$response = mail(...然后json_encode($response['ResponseData'] = $success); 在 js 中您指的是不存在的成员: 响应数据

于 2012-11-20T10:50:17.193 回答
0

php 脚本不回显任何内容,因此响应为空。您可以在 php 中回显某些内容作为响应,代码将起作用

于 2012-11-20T10:51:17.940 回答