【问题标题】:Contact form not responding联系表格没有回应
【发布时间】:2015-07-18 00:25:43
【问题描述】:

我正在尝试为我的网站实现一个基本的联系表单,该表单包含三个字段:姓名、电子邮件和消息。我正在使用的 php 代码如下:

<?php
// Fetching Values from URL.
$name = $_POST['name2'];
$email = $_POST['email2'];
$message = $_POST['message2'];

$email = filter_var($email, FILTER_SANITIZE_EMAIL); // Sanitizing E-mail.

// After sanitization Validation is performed
if (filter_var($email, FILTER_VALIDATE_EMAIL)) 
{
        $subject = $name;
        // To send HTML mail, the Content-type header must be set.
        $headers = 'MIME-Version: 1.0' . "\r\n";
        $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
        $headers .= 'From:' . $email. "\r\n"; // Sender's Email
        $headers .= 'Cc:' . $email. "\r\n"; // Carbon copy to Sender
        $template = '<div style="padding:50px; color:white;">Hello ' . $name . ',<br/>'
        . '<br/>Thank you for contacting me!<br/><br/>'
        . 'Name:' . $name . '<br/>'
        . 'Email:' . $email . '<br/>'
        . 'Message:' . $message . '<br/><br/>'
        . 'This is a Contact Confirmation mail.'
        . '<br/>'
        . 'I\'ll get back to you as soon as possible .</div>';
        $sendmessage = "<div style=\"background-color:#7E7E7E; color:white;\">" . $template . "</div>";
        // Message lines should not exceed 70 characters (PHP rule), so wrap it.
        $sendmessage = wordwrap($sendmessage, 70);
        // Send mail by PHP Mail Function.
        mail("myemailid@gmail.com", $subject, $sendmessage, $headers);
        echo "Your message has been sent successfully!";
} 
else 
{
    echo "<span>* invalid email *</span>";
}
?>

(显然我用我的实际电子邮件地址替换了 myemailid@gmail.com)

调用此php代码的JavaScript文件如下:

$(document).ready(function() {
$("#submit").click(function() {
var name = $("#name2").val();
var email = $("#email2").val();
var message = $("#message2").val();

// Checking for blank fields.
if (name == '' || email == '' || message == '') 
{
    alert("Please Fill Required Fields");
} 
else 
{
    $.post("contact_form.php", 
    {
        name2: name,
        email2: email,
        message2: message,
    }, function(data) {

    if (data == "Your message has been sent successfully!") {
    $("#footer-form")[0].reset(); // To reset form fields on success.
    }
    });
}
});
});

当我单击“发送”按钮时,没有任何反应。我在这里做错了什么?

如果这有帮助:

<div class="col-sm-6">
                            <div class="footer-content">
                                <form role="form" id="footer-form">
                                    <div class="form-group has-feedback">
                                        <label class="sr-only" for="name2">Name</label>
                                        <input type="text" class="form-control" id="name2" placeholder="Name" name="name2" required>
                                        <i class="fa fa-user form-control-feedback"></i>
                                    </div>
                                    <div class="form-group has-feedback">
                                        <label class="sr-only" for="email2">Email address</label>
                                        <input type="email" class="form-control" id="email2" placeholder="Enter email" name="email2" required>
                                        <i class="fa fa-envelope form-control-feedback"></i>
                                    </div>
                                    <div class="form-group has-feedback">
                                        <label class="sr-only" for="message2">Message</label>
                                        <textarea class="form-control" rows="8" id="message2" placeholder="Message" name="message2" required></textarea>
                                        <i class="fa fa-pencil form-control-feedback"></i>
                                    </div>
                                    <input type="button" id="submit" value="Send" class="btn btn-default">
                                </form>
                            </div>
                        </div>

另外,点击发送按钮时我会得到的 php URL 如下:

/index.html?name2=John+Doe&email2=johndoe%40example.com&message2=This+is+a+test+message.

自从我将按钮类型更改为“按钮”而不是“提交”后,该按钮就不会重新加载页面或给我这个 URL。

【问题讨论】:

  • 您是否检查过浏览器调试器工具中的网络选项卡以查看您得到的响应?
  • $_POST从URL中获取值我认为应该是$_GET
  • @shehary 他正在使用$.post 所以这可能不是问题

标签: javascript php contact-form


【解决方案1】:

要在 PHP 中读取表单参数,您需要使用 $_GET。在该级别进行调试。看看您是否在服务器端获得了这些值。另外,请确保您正在阅读 js 中的所有值。提供您的 HTML 块会有所帮助。

【讨论】:

  • 你的 PHP 代码中还有一个额外的“}”,正如子龙丘所说。
  • @MrMadsen 提到,$.post 使用 HTTP POST 请求从服务器加载数据。所以$_GET 不是问题。
  • 我尝试将 POST 替换为 GET,但仍然无法正常工作。另外,我检查了 JS 脚本中的值,它们都很好。
  • @zilongqiu 检查 OP 给出的 url 它绝对是一个 GET
  • @user3980820 DarthCoder 想要发送带有 ajax 请求的邮件,他正在使用 $.post。发生 GET 是因为他使用了输入类型提交(+ 表单标记,如果提交,则默认使用 GET 方法发送)而不是按钮。所以表单提交了,他被重定向了。
【解决方案2】:

错误是语法错误,} 后面的echo "Your message has been sent successfully!";

编辑:

此外,请确保验证是否调用了$("#submit").click

您还需要取消表单提交操作(您正在使用 ajax 发送邮件)。

【讨论】:

  • 好的,所以我修复了额外的 }(感谢您指出这一点!)。但是将 POST 方法更改为 GET 并没有帮助!
  • @DarthCoder 我从来没有说过要改变方法! xD 保留 POST 方法。你能给我们看看风景吗?请
  • 哦,好的。所以这就是问题所在。早些时候我有“提交”的按钮类型,它会向我显示 php-url。因为,我将其更改为键入按钮,所以页面不会重新加载并给我一个 url。我已将原始网址添加到问题描述中。
  • @DarthCoder 还有问题吗?
  • 是的,我仍然有这个问题。您是否删除了之前发布的代码?如何取消表单提交操作?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-04
  • 2013-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-06
相关资源
最近更新 更多