【发布时间】:2013-09-04 19:38:44
【问题描述】:
我们正在我们的网站上实施一个表单,让人们订阅他们的设备。我们使用 jquery.easing.js 仅在其他字段正确时显示某些字段。 javascript 也在验证输入。
现在谈到 sumbit,我们想向我们的 PHP 脚本发送两个字段,以便它可以向我们发送带有订阅的电子邮件。
表单正在运行,只是我们没有收到电子邮件。我们已经调查过了,但找不到解决方案。有人可以帮助我们吗?
Javascript(提交部分):
$('#submit').click(function(e)
{
e.preventDefault();
var mac=$("#mac").val();
var store=$("#store").val();
//alert(mac);
//alert(store);
//
var dataString = 'mac=' + mac + 'store=' +store;
$.ajax({
type: 'POST',
url: 'ajax/subscribe.php',
data: dataString,
success: function(data) {
$("#optoutform").show().html("<h3>You have successfully opted-out.</h3>");
},
error: function(data) {
$("#optoutform").show().html("<h3>There was an error processing your request.</h3>");
}
});
return valid;
});
订阅.php
$to = "request@domain.com";
$subject = "Request";
$mac = $_REQUEST['#mac'] ;
$store = $_REQUEST['#store'] ;
$headers = "From: request@domain.com";
$sent = mail($to, $subject, $mac, $store, $headers) ;
更新:
好的,我已将 subscribe.php 编辑为:
$to = "request@domain.com";
$subject = "Request";
$message = "<h1>Request</h1>";
$message .= "<strong>MAC</strong>: POST_$mac";
$message .= "<strong>Store</strong>: POST_$store";
$headers = "From:youremail@domain.com";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html\r\n";
$sent = mail($to, $subject, $mail_body, $headers);
并根据 POST 将 dataString 更改为正确的,但仍然没有电子邮件发送到我们的收件箱...
我们还能做错什么?
【问题讨论】:
-
您的数据正在传递字段名称为
mac和store的字符串,但您正在访问$_REQUEST['#mac']和$_REQUEST['#store']。这可能不是您问题的根源,但想指出这一点。 -
你的
mail()有错误的参数,即$store,因为它在string $additional_headers的位置,你的$headers = "From: request@domain.com";现在在string $additional_parameters-bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] ) -
P.S.您可能希望绑定到表单 id submit
$('#formId').submit(function...,而不是点击事件,这样在表单字段中按回车键的人就不会绕过点击。 -
谢谢@Ross 我已经改变了你提到的内容。
标签: php javascript ajax forms post