【发布时间】:2015-03-06 18:32:57
【问题描述】:
我正在调用一个 jQuery Mobile 表单来访问一个简单的 PHP 邮件文件。我已经使用从 ajax 调用传递的相同数据测试了 PHP 文件,效果很好。但是,当使用 ajax 时,不会发送电子邮件,并且地址栏包含查询字符串。我真的需要更多的眼睛看着这个,因为我的眼睛似乎永远越过了。
表格摘录
<form id="hipaa-form" name="hipaa-form" autocomplete="on" data-ajax="false">
<p data-role="fieldcontain">
<label for="name">Name:<span class="smallred">*</span></label>
<input type="text" name="name" id="name" autofocus required placeholder="Full Name">
</p>
<p>
<input type="submit" name="send" id="send" style="cursor:pointer" value="Submit">
</p>
</form>
JavaScript
$('#hipaa-form').on('submit', function (e) {
var data = $(this).serialize();
$.ajax({
type: "GET",
url: email.php,
data: data,
dataType: "text",
success: function (result) { alert(result); },
error: function(xhr, status, error) {
var err = eval("(" + xhr.responseText + ")");
alert("Error: " + +err.Message)
}
});
});
注意数据变量设置正确,是地址栏中的字符串。来自成功功能的警报会显示整个网页,但同样不会发送电子邮件。我尝试在 PHP 中设置自定义错误处理程序,但它们根本没有帮助。
PHP
$body = "Full Name: " . $_GET["name"] . "\r\n";
$body = $body . "email: " . $_GET["email"] . "\r\n";
$body = $body . "Phone: " . $_GET["phone"] . "\r\n";
$body = $body . "website: " . $_GET["Website-URL"] . "\r\n";
$body = $body . "app. type: " . $_GET["pgm-type"] . "\r\n";
$body = $body . "uses DB: " . $_GET["uses-db"] . "\r\n";
$body = $body . "saves data: " . $_GET["stores-patient-data"] . "\r\n";
$body = $body . "db vendor: " . $_GET["database-vendor"] . "\r\n";
if (isset($_GET["db-other"]))
$body = $body . "other db: " . $_GET["db-other"] . "\r\n";
$to = "contact.us@bunkerhill.com";
$subject = "HIPAA Form Submission";
mail($to, $subject, $body, "From: contact.us@text.bunkerhill.com");
echo "Form Submitted"
?>
我的测试站点是:http://test.bunkerhill.com/
TIA
【问题讨论】:
-
在您的 ajax 调用中添加 return false 以使提交不提交表单,而是 ajax 将提交。 (在 ajax 调用之后)
-
谢谢。解决了地址栏问题,但电子邮件仍未发送,整个 html 页面显示在成功警报中。
-
嗯,你实际上是在做
alert(result),这就是你的整个 html 页面显示在警报中的原因 :) 来到邮件问题,你检查你的邮件代码是否有效吗?这应该是PHP方面的一些问题 -
应该用什么代替警报(结果)?我检查了 PHP 端,它工作正常。
-
您的 PHP 错误日志中有关于电子邮件的任何内容吗?
标签: javascript php jquery ajax jquery-mobile