使用AJAX时,PHP文件中的“undefined”响应和responseText

时间:2017-03-18 15:54:57

标签: php html ajax forms

我有一个用html编写的表单,一些AJAX代码和一个PHP文件,它将表单的信息通过电子邮件发送给网站的管理员。问题是,当我通过FireBug插件中的“控制台”选项卡检查代码时,一切都如我所料。回复是“好我的朋友”(因为它应该是电子邮件已成功发送的情况)。但是当我希望通过这两行显示确切的responseresponseTextalert(this.responseText);alert(this.response);时,打开的警报窗口会显示:“undefined”。我的意思是PHP文件正确发送响应,FireBug证明了这一点。但我无法通过this.responsethis.responseText获得回复。你认为有什么问题?我已经检查了我的问题的可能重复,但没有一个可以提供帮助。
这是我的完整代码:
PHP:

<?php
$to = "a@example.com";
$sendersName = $_POST[ 'name' ];
$sendersEmail = $_POST[ 'email' ];
$message = "Name : " . $sendersName . "\n";
$message .= "Email : " . $sendersEmail . "\n";
$message .= "Message : " . $_POST[ 'message' ] . "\n";
$header = "From:b@example.com \r\n";
$header .= "Cc:c@example.com \r\n";
$header .= "Bcc:d@example.com \r\n";
$result = mail( $to, "ارسال پیام به وبسایت تیام نت", $message, $header );
if ( $result == true ) {
    echo( "OK My Friend" );
} else {
    echo( "email not sent" );
}
?>

HTML表单:

    <div class="col-sm-5" id="contact_form">
  <form action="" method="post">
    <div class="form-group">
      <label for="name">نام و نام خانوادگی</label>
      <input type="text" class="form-control" name="name" placeholder="نام و نام خانوادگی خود را وارد کنید." id="name">
      <label class="error" for="name" id="name_error">وارد نمودن نام و نام خانوادگی اجباری است.</label>
    </div>
    <div class="form-group">
      <label for="email">ایمیل</label>
      <input type="email" class="form-control" name="email" placeholder="آدرس ایمیل خود را وارد کنید." id="email">
      <label class="error" for="email" id="email_error">وارد نمودن ایمیل اجباری است.</label>
    </div>
    <div class="form-group">
      <label for="message">پیام</label>
      <input type="text" name="message" class="form-control" placeholder="پیام خود را بنویسید." id="message">
      <label class="error" for="message" id="message_error">وارد نمودن پیام اجباری است.</label>
    </div>
    <div class="form-group">
      <input type="submit" name="submit" value="ارسال" id="submit" class="center-block btn btn-primary">
    </div>
  </form>
</div>


AJAX:

$(function () {
    "use strict";
    $('.error').hide();
    $("input#submit").click(function () {
        // validate and process form here

        $('.error').hide();
        var name = $("input#name").val();
        if (name === "") {
            $("label#name_error").show();
            $("input#name").focus();
            return false;
        }
        var email = $("input#email").val();
        if (email === "") {
            $("label#email_error").show();
            $("input#email").focus();
            return false;
        }
        var message = $("input#message").val();
        if (message === "") {
            $("label#message_error").show();
            $("input#message").focus();
            return false;
        }
        var dataString = 'name=' + name + '&email=' + email + '&message=' + message;
        alert(dataString);
        $.ajax({
            type: "POST",
            url: "sendMessage.php",
            data: dataString,
            success: function () {
                alert(this.responseText);
                alert(this.response);
                if (this.responseText === "OK My Friend") {
                    $('#contact_form').html("<div id='message'></div>");
                    $('#message').html("<h2>پیام شما ثبت شد!</h2>")
                        .append("<p>همکاران ما به زودی با شما تماس خواهند گرفت.</p>")
                        .hide()
                        .fadeIn(1500, function () {
                            $('#message').append("OK");
                        });
                } else {
                    //$('#contact_form').html("<div id='message'></div>");
                    //$('#message').html(this.responseText);
                }
            }
        });
        return false;
    });
});

1 个答案:

答案 0 :(得分:1)

this.responseTextthis.response永远不会在您的javascript中定义,并会在控制台中抛出未定义的错误。要从服务器获取数据,您必须将success: function更改为

success: function (data) {
    alert(data); // the response from the server