【问题标题】:Contact form returning blank email联系表格返回空白电子邮件
【发布时间】:2015-05-18 15:23:16
【问题描述】:

我的 Foundation 5 联系表由于某种原因返回空白电子邮件。 javascript 是正确的,但我的 PHP 文件没有任何问题。我究竟做错了什么?这是 PHP:

<?php
$name = $_POST["t_name"];
$email = $_POST["t_email"];
$message = $_POST["t_message"];

$msg = "
Name: $name
Email: $email
Commments:
$message
";
$to = "me@me.com";
$subject = "From My Site";
$message = $msg;
mail($to,$subject,$message,$headers);
?>

HTML:

<div id="contactForm" class="large-6 large-offset-6 columns">
                            <form id="t-contact-form" method="post" data-abide="ajax">
                                <small class="error">Your full name is required.</small>
                                <input name="t_name" id="t_name"  type="text" placeholder="Full Name" required>
                                <small class="error">An email address is required.</small>
                                <input name="t_email" id="d_email" type="email" placeholder="username@address.com" required>
                                <small class="error">Your message is required.</small>
                                <textarea name="t_message" id="d_message" placeholder="Enter your message here" required></textarea>
                                <button class="contact-submit submit">Submit</button>
                                </a>
                            </form>
                        </div>

和js:

$('#t-contact-form').on('valid.fndtn.abide', function() {
        var t_name = $("input#t_name").val();
        var t_email = $("input#t_email").val();
        var t_message = $("textarea#t_message").val();
        // Data for response
        var dataString = 'name=' + t_name + 
            '&email=' + t_email + 
            '&message=' + t_message;
        //Begin Ajax Call
        $.ajax({
                type: "POST",
                url: "assets/php/t-mail.php",
                data: dataString,
                success: function() {
                    $('#t-contact-form').html("<div id='success'></div>");
                    $('#success').html("<h2>Thanks!</h2>")
                            .append("<p>Dear" + t_name + "!, I look forward to working with you.</p>")
                            .hide()
                            .fadeIn(1500);
                            },
        }); //ajax call
        return false;
});

【问题讨论】:

  • $headers 是在哪里定义的?另外,能否提供一下JS,以防万一不正确?
  • 好吧,在 JS 中,您会得到 ID 为 t_message 和 t_email 的输入,但 HTML 中的 id 是 d_email 和 d_message。
  • 谢谢,这只是我帖子中的复制/粘贴错误。发帖前应该重读一遍。
  • 没有定义 $headers。不认为我需要它,也是为了简单地查明错误。

标签: php zurb-foundation-5


【解决方案1】:

使用name 而不是t_name 发送AJAX 调用,emailmessage 相同。它最初在 HTML 中的命名方式对 PHP 来说并不重要,重要的是发布的数据。

var dataString = 'name=' + t_name + 
        '&email=' + t_email + 
        '&message=' + t_message;

所以在 PHP 中你应该这样做

<?php
$name = $_POST["name"];
$email = $_POST["email"];
$message = $_POST["message"];

此外,您通过 id 获取输入,但使用 JavaScript 中的名称。在 HTML 中将它们重命名为 t_emailt_message,或者修改 JavaScript。

<input name="t_email" id="t_email" type="email" placeholder="username@address.com" required>
<textarea name="t_message" id="t_message" placeholder="Enter your message here" required></textarea>

【讨论】:

  • 谢谢。那行得通。我在输入标签中添加了“name=”只是为了掩饰自己。也许这是一个矫枉过正。
【解决方案2】:

在js中 在第三行中将#t_email 更改为#d_email,它会起作用

【讨论】:

  • id 无关紧要。这是关于在 AJAX 调用中发布的数据。
  • 他正在发布 #t_email 的数据,在 html 中是 #d_email ,这就是他收到空白电子邮件的原因
  • 我已经更正了,这也是一个错误。虽然也请查看我的答案。
猜你喜欢
  • 1970-01-01
  • 2013-12-29
  • 1970-01-01
  • 1970-01-01
  • 2017-09-13
  • 2013-11-02
  • 2017-06-23
  • 1970-01-01
相关资源
最近更新 更多