我有一个用html编写的表单,一些AJAX代码和一个PHP文件,它将表单的信息通过电子邮件发送给网站的管理员。问题是,当我通过FireBug插件中的“控制台”选项卡检查代码时,一切都如我所料。回复是“好我的朋友”(因为它应该是电子邮件已成功发送的情况)。但是当我希望通过这两行显示确切的response
或responseText
:alert(this.responseText);
和alert(this.response);
时,打开的警报窗口会显示:“undefined”。我的意思是PHP文件正确发送响应,FireBug证明了这一点。但我无法通过this.response
或this.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;
});
});
答案 0 :(得分:1)
this.responseText
和this.response
永远不会在您的javascript中定义,并会在控制台中抛出未定义的错误。要从服务器获取数据,您必须将success: function
更改为
success: function (data) {
alert(data); // the response from the server