我正在调用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
答案 0 :(得分:4)
您需要阻止使用preventDefault();
提交表单$('#hipaa-form').on('submit', function (e) {
e.preventDefault();
...
}
您的ajax请求应使用带有GET的查询字符串参数,或更改为type: "POST"
并调整您的PHP以使用$_POST
示例:
type: "GET",
url: "page.php?foo=x&bar=y"
或者
type: "POST",
url: "page.php",
data: data
最后,我有点担心这个例子,包括HIPAA信息。您可能需要考虑将信息存储在安全位置的方法,并简单地发送一封电子邮件,说明“嘿,有新消息可用。点击此处对我们的安全系统进行身份验证以进行阅读。”并不是说你的方法有任何绝对的错误,但感觉还有其他与HIPAA相关的责任需要考虑。
答案 1 :(得分:0)
url
param应该是&#39; email.php&#39;在引号中,所以改变
url: email.php
到
url: 'email.php'
如果没有它只是发送一个电话http://test.bunkerhill.com/,你的PHP代码发送电子邮件根本就不会被调用:)