第一个问题,第一次看PHP,请耐心等待。
我目前有以下jQuery调用php文件:
$(document).on('click', '#btnContactUs', function () {
var name = $("input#name").val();
var email = $("input#email").val();
var subject = $("input#subject").val();
var message = $("input#message").val();
var dataString = 'name='+ name + '&email=' + email + '&subject=' + subject + '&message=' + message;
$.ajax({
type: "POST",
url: "php/message.php",
data: dataString,
success: function(response) { alert(response); }
});
return false;
});
控制台正在将呼叫记录为成功(XHR已完成加载:POST“php / message.php”)。
以下是文件中的完整脚本:
<?php
$to = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: webmaster@example.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
?>
电子邮件未被发送/接收(我也在检查垃圾邮件)。
文件托管在安装了PHP的Web服务器上。警告框弹出,但为空。最初的AJAX调用是通过网页上的提交按钮进行的。
编辑:我发送给我的个人电子邮件,我上面没有包含这个电子邮件。编辑:即使访问脚本的URL,仍然没有发送电子邮件。
最终编辑:解决方案是我的服务器没有安装PHP邮件 - 它不受支持,因为它被认为是不可靠的,因此他们建议使用SMTP。为了解决这个问题,我使用了DrewT使用SSH来检查“which sendmail”
的解决方案希望这种情况可以帮助将来的某个人。
谢谢大家。
答案 0 :(得分:0)
似乎正在发生的事情是您没有以正确的格式发送信息,因为您没有在服务器上解析var dataString。我会尝试类似的东西:
var name = $("input#name").val();
var email = $("input#email").val();
var subject = $("input#subject").val();
var message = $("input#message").val();
然后在你的帖子功能中:
$.ajax({
type: "POST",
url: "php/message.php",
data : { name: name, email: email, subject: subject, message: message },
success: function (response, status, err) {
// do stuff...
// NOTE: don't return false or it won't send
// 'return false' only if the form is incomplete
// and you don't want the email sent out prematurely
}
});
然后在PHP中接收这些变量:
$name = $_POST['name'];
$email = $_POST['email'];
$subject = $_POST['subject'];
$message = $_POST['message'];
现在您可以发送这样的电子邮件:
// Enter your send email address
$to = 'email@example.com';
// Add your headers
$header = "from: $name <$email>";
// only send it if we have all the data we need
if( $subject !== "" || " " && $message !== "" || " " && $name !== "" || " " && $mail_from !== "" || " " ) {
$send_contact = mail($to,$subject,$message,$header);
// check if message was sent
// and provide some formatting (html) to send along in our response
if ($send_contact) {
echo '<div class="msg-sent">
Your message was sent successfully yay!
</div>';
}
else {
echo '<div class="msg-send-failed">
SEND FAILED :0
</div>';
}
}
else {
echo '<div class="msg-had-empty">
YOU HAD EMPTY POST VARIABLES :0
</div>';
}
除此之外,您需要使用浏览器检查员中的网络标签进行调试。祝您好运!