【发布时间】:2017-03-12 19:24:18
【问题描述】:
我正在为一个网站创建一个联系我们的表单。我正在使用 jquery 为 html 按钮创建一个 .click() 函数。然后使用 ajax 调用 email.php 代码。当我单击按钮时,控制台显示以下错误:
500(内部服务器错误)。
我是 ajax 和 php 一起使用的新手,所以我现在不知道该怎么做。
这是 HTML 表单:
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src = "js/callmail.js"></script>
</head>
<body ng-app = "">
<div class = "container">
<form name = "contact">
<label for = "subject" class = "control-label">Subject:</label>
<input name = "subject" id = "subject" ng-model = "subject" required/>
<span class = "warning" ng-show="contact.subject.$touched && contact.subject.$invalid">You Must Enter a subject!</span>
<span class = "success" ng-show="contact.subject.$touched && contact.subject.$valid">Valid!</span>
<br/>
<label for = "body" class = "control-label">Body:</label>
<input name = "body" id = "body" ng-model = "body" required/>
<span class = "warning" ng-show="contact.body.$touched && contact.body.$invalid">Your email must have a body!</span>
<span class = "success" ng-show="contact.body.$touched && contact.body.$valid">Valid!</span>
<br/>
<label for = "signature" class = "control-label">Return Email:</label>
<input name = "signature" id = "signature" ng-model = "signature" type = "email" required/>
<span class = "warning" ng-show="contact.signature.$touched && contact.signature.$invalid">You must enter a valid return email!</span>
<span class = "success" ng-show="contact.signature.$touched && contact.signature.$valid">Valid!</span>
<br/>
<button ng-disabled = "contact.$invalid" id = "sendmail" type = "submit" class = "btn btn-success">Submit</button>
</form>
</div>
这里是对 php 代码的 jQuery/AJAX 调用:
$(函数() {
$("#sendmail").click(function() {
var data = {
to: "myemail",
subject: $("#signature").val() + ": " + $("#subject").val(),
message: $("#body").val()
}
$.ajax({
type: "POST",
url: "email.php",
data: data,
success: function() {
alert("Message sent");
}
});
console.log(data);
});
});
最后,这是负责发送电子邮件的 php 代码:
<?php
if ($_POST["submit"]) {
$subject = $_POST["subject"];
$message = $_POST["message"];
$headers = "From: " . $_POST["name"] . "Reply to: " . $_POST["signature"];
mail("myemail", $subject, $message, $headers))
}
?>
任何帮助将不胜感激。
【问题讨论】:
-
这可能不是错误,但在你的 data JS 对象中你没有任何“提交”键,所以你永远不会在电子邮件中输入你的 if .php。然后,尝试在邮件功能中添加一些看起来像电子邮件的东西。最后,您是否有 SMTP 服务器或者您是否配置了 sendmail 以便能够发送电子邮件?你的错误到底是什么? PHP 应该显示错误,尝试更新您的 php.ini 以显示它们
-
我不知道这是否重要,但我使用的是 ECOWEBHOST 而不是本地服务器。另外,如何将提交键添加到我的数据对象?
-
您使用什么作为 smtp 发送电子邮件?您的电子邮件将来自谁?
标签: php jquery ajax email internal-server-error