【问题标题】:PHP form not submitting but not showing any errorsPHP表单未提交但未显示任何错误
【发布时间】:2015-07-19 03:58:56
【问题描述】:

我正在尝试使用联系表单设置一个非常简单的即将推出的页面。我已经上传了here 的所有内容(点击立即联系我们按钮)。

现在,当我填写信息并单击发送时,它会给我一条错误消息。我看不到任何错误并且错误报告设置为 on(可能在错误的位置),这是 php 代码:

<?php 
ini_set('display_startup_errors',1);
ini_set('display_errors',1);
error_reporting(-1);


if (isset($_REQUEST['name'],$_REQUEST['email'])) {

    $name = $_REQUEST['name'];
    $email = $_REQUEST['email'];
    $message = $_REQUEST['message'];

    $to = 'editedforstackoverflow';

    $subject = 'Contact Request From Website';
    $headers = "From: ".$name." <".$email."> \r\n";

    $send_email = mail($to,$subject,$message,$headers);

    echo ($send_email) ? 'success' : 'error';

}

?>

这里是js部分:

    $('#ajax-contact').on('submit', function() {

    // Add text 'loading...' right after clicking on the submit button. 
    $('.output_message').text('Loading...');

    var form = $(this);
    $.ajax({
        url: form.attr('action'),
        method: form.attr('method'),
        data: form.serialize(),
        success: function(result) {
            if (result == 'success') {
                $('.output_message').text('Nachricht erfolgreich geschickt!');
            } else {
                $('.output_message').text('Da ist leider ein Fehler unterlaufen!');
            }
        }
    });

    // Prevents default submission of the form after clicking on the submit button. 
    return false;
});

我真的看不出我犯了什么错误,任何帮助将不胜感激!

【问题讨论】:

    标签: javascript php jquery contact-form


    【解决方案1】:

    你的 if 语句完全错误。
    不能用 , 分隔 2 个语句,它应该用 ||&amp;&amp; 分隔。
    The Logical Operators 文章将让您熟悉这些运算符。
    另外,$_REQUEST 非常不安全。最好不要使用它们。不使用它们的原因在Here 中进行了解释。

    【讨论】:

      【解决方案2】:

      查看您网站中的表单,您的&lt;input&gt; 标记似乎缺少nameemail 字段上的name 属性:

      他们需要拥有 name="name"name="email" 以便 .serialize() 可以获取这些值并将它们带入您的请求中。这样反过来在 PHP 中,它们就会在你的 $_REQUEST

      这是一个关于我对那些失踪的name="" 的意思的演示。我已经明确省略了字段 3,以便您看到。

      http://codepad.viper-7.com/rTTPuq

      所以解决方法是。只需在 &lt;input&gt; 标签上添加 name="name"name="email"

      manual中的实际注释:

      注意:只有“成功的控件”被序列化为字符串。由于未使用按钮提交表单,因此未序列化提交按钮值。对于要包含在序列化字符串中的表单元素的值,该元素必须具有 name 属性

      【讨论】:

      • 谢谢!那就是当你过分关注让它看起来花哨而不是让它发挥作用时:)
      • @Paranoia 是的,你完全忘记了 name="" 很高兴这有帮助
      猜你喜欢
      • 2014-03-13
      • 1970-01-01
      • 2012-07-25
      • 1970-01-01
      • 1970-01-01
      • 2022-11-06
      • 2014-02-08
      • 1970-01-01
      • 2015-10-17
      相关资源
      最近更新 更多