我的联系人表单不包含邮件中的消息和其他信息。
有'Unknown sender'和'No subject'。电子邮件包含我的标签(from:, subject:, message:),但后面没有内容。
我已经尝试了一些其他的脚本,但他们给出了相同的结果。
My JS code
(function($){
$(document).ready(function() {
$('#submit-form').click(function(e){
e.preventDefault();
var reg = /^([A-Za-z0-9_'-'.])+'@([A-Za-z0-9_'-'.])+'.([A-Za-z]{2,4})$/;
var name = $('#rp_name').val(),
email = $('#rp_email').val(),
subject = $('#rp_subject').val(),
message = $('#rp_message').val(),
data_html,
success = $('#success');
if(name === ""){
$('#rp_name').val('Please enter your name.');
}
if(subject === ""){
$('#rp_subject').val('Please enter your name.');
}
if(email === ""){
$('#rp_email').val('Your email is required.');
}else if(reg.test(email) === false){
$('#rp_email').val('Invalid Email Address.');
}
if(message === ""){
$('#rp_message').val('Message is required.');
}
if(message !== "" && name !== "" && reg.test(email) !== false) {
data_html = "name=" + name + "&email="+ email + "&message=" + message + "&subject="+ subject;
alert(data_html);
$.ajax({
type: 'POST',
url: 'php_helpers/contact_form.php',
data: data_html,
success: function(msg){
if (msg == 'sent'){
success.html('<div class="alert alert-success">Message <strong>successfully</strong> sent!</div>') ;
$('#rp_name').val('');
$('#rp_email').val('');
$('#rp_message').val('');
}else{
success.html('<div class="alert alert-error">Message <strong>not</strong> sent! Please Try Again!</div>') ;
}
}
});
}
return false;
});
});
})(jQuery);
PHP代码
<?php
$to = 'email'; // I changed it
$subject = $_POST['subject'];
if($to) {
$name = $_POST['name'];
$email = $_POST['email'];
$fields = array(
0 => array(
'text' => 'Imie',
'val' => $_POST['name']
),
1 => array(
'text' => 'Email',
'val' => $_POST['email']
),
2 => array(
'text' => 'WIADOMOSC',
'val' => $_POST['message']
)
);
$message = "";
foreach($fields as $field) {
$message .= $field['text'].": " . htmlspecialchars($field['val'], ENT_QUOTES) . "<br>'n";
}
$$headers = 'MIME-Version: 1.0' . "'r'n";
$headers .= 'Content-type: text/html; charset=utf-8' . "'r'n";
$headers .= 'From: '. $email . "'r'n" . 'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
if ($message){
echo 'sent';
}else{
echo 'failed';
}
} else {
echo "Don't access this file directly";
}
?>
当我检查您的contact.php文件代码是ok的。但是如果使用firefox,你需要一样东西。请安慰您的代码。我的意思是,当你打开firebug时,会有一个控制台选项。有了帮助,你可以检查你的值和变量是要走还是空。
我认为你的值不去PHP文件。使用控制台,你可以很容易地修改你的值。
检查您的php脚本是否接收到姓名,电子邮件和消息。你可以用
来检查var_dump($_POST);
如果服务器没有接收到这些变量,尝试发送data_html作为一个对象:把
data: data_html,
data: {name: name, email: email, message: message}
我没有测试它,但我总是使用这种方式从js发送数据到服务器
您在行中使用了两个美元符号:$$headers = 'MIME-Version: 1.0'。"' r ' n";
请删除"$",然后再试。
感谢大家的回复。我终于找到了解决办法。我以前没有使用过firebug,但多亏了它,我可以找到错误信息。现在脚本运行正常。
它不是在代码,但在。htaccess重写规则为。php文件,这是建议301错误的ajax请求(…/contact.php).
我有一个。php页面(文件上传器),我认为为它添加另一个seo友好的链接规则将是一个好主意。