2015-09-03 148 views
1

我的联系表格不包括电子邮件中的消息和其他信息。联系表格发送空白电子邮件

有'未知发件人'和'没有主题'。电子邮件包含我的标签(来自:,主题:,消息:),但没有内容写在他们后面。

我已经尝试了一些其他的脚本,但他们给了相同的结果。

我的JS代码

(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"; 
} 
?> 

我会很高兴的任何提示。

+0

您确定您正在PHP页面上获取值吗? –

+0

感谢您的提示。在.htaccess文件中,有一个针对.php文件的重写规则,它会导致ajax post请求出现问题。解决了。 – Kuszluk

回答

0

在那里,我检查你的contact.php文件代码是好的。但是如果使用Firefox,你需要一件事。请控制你的代码。我的意思是当你打开萤火虫时,会有一个选项控制台。随着帮助你可以检查是你的价值与变量一起或者他们是空的。

我认为你的价值不会去PHP文件。使用控制台,你可以很容易地错误的价值。

我希望这对你有意义。

+0

今天我第一次使用了萤火虫,它给了我需要的提示,谢谢! – Kuszluk

+0

欢迎您............... –

0

检查您的php脚本是否收到姓名,电子邮件和消息。您可以使用

var_dump($_POST); 

检查,如果服务器没有收到这些变量,尝试发送data_html作为一个对象: 变化

data: data_html, 

data: {name: name, email: email, message: message} 

我没有测试它,但我总是使用这种方式将数据从js发送到服务器。

+0

我以这种方式编写了代码,现在它更具可读性,谢谢。 – Kuszluk

0

您正在使用的线两条美元符号:$$标题= 'MIME-版本:1.0'。为 “\ r \ n” 个;
请删除“$”并重试。

+0

我纠正了它,但事实并非如此。 – Kuszluk

+0

Ya firebug是一个很好的工具来调试JavaScript错误.. – rahul

0

感谢您的回复。我终于设法找到解决方案。我之前没有使用过萤火虫,但感谢它,我可以找到错误信息。现在脚本工作正常。

这不是在代码中,而是在.htaccess重写规则.php文件,这是对ajax请求(../contact而不是../contact.php)的301错误。

我有一个PHP页面(文件上传),我认为这将另一搜索引擎友好的链接规则将是一个不错的主意。

相关问题