为什么这个AJAX调用正确的php脚本没有返回任何东西?

时间:2011-08-11 03:14:49

标签: php javascript jquery ajax forms

我之前发布了一个类似的问题,只是我没有意识到我放的代码中有一个明显的错误(不提供数据),我新存在。现在我正在重做它,因为我仍然遇到问题。

我有这个AJAX:

function sendMail(){
            $.ajax({
                type: "POST",
                url: "../prestige-auto/php/sendMail.php",
                data: {"message" : $('#contactMessage').html(),
                         "email" : $('#contactEmail').val(),
                         "name" : $('#contactName').val()},
                success: function(result){
                    if (result == 'success') {
                        alert(result);
                    } else {
                        alert(result);
                    }
                }
            });
        };

$('#submitContact').click(function(){
        sendMail();
    })

和这个PHP:

<?php

$trimmed = array_map('trim', $_POST);

$message = $trimmed['message'];
$email = $trimmed['email'];
$name = $trimmed['name'];

if (empty($message)) {
    $message = FALSE;
}

if (empty($email)) {
    $message = FALSE;
}

if (empty($name)) {
    $message = FALSE;
}

if ($message && $email && $name){

    $body = "From: $name.\n \n $message";

    mail(/*some email*/, 'Website Contact Form Submission', $body, "From: $email");

    echo ('success');

}

echo($message.' '.$email.' '.$name);

?>

定义了所有定义的html元素。当我运行它时,所有返回的是一个空白警告框(意味着PHP脚本没有打印出成功)。知道为什么不发邮件吗?

3 个答案:

答案 0 :(得分:1)

在回显'success'之后你没有退出 - PHP还没有停止处理,所以它只是继续到下一行,并且也渲染出echo($message.' '.$email.' '.$name);

这意味着您的JS测试正在将successsuccess$message $email $name进行比较,这始终是错误的。

如果要停止处理,您有两种选择:exitdie(不要这样做),或将其余代码包装在else标记中,如下所示:

if ($message && $email && $name){

    $body = "From: $name.\n \n $message";

    mail(/*some email*/, 'Website Contact Form Submission', $body, "From: $email");

    echo ('success');

} else {

    echo($message.' '.$email.' '.$name);

}

另外,请确保不要使用?>结束PHP脚本!这几乎总会导致以后PHP脚本在末尾呈现一些不需要的空白区域时出现问题,这也会失败。

答案 1 :(得分:0)

请勿使用array_map('trim', $_POST) http://www.php.net/manual/en/function.trim.php#96246

答案 2 :(得分:0)

首先检查ajax响应以查看是否发生任何错误。