PHP表单没有提交但没有显示任何错误

时间:2015-05-08 09:29:26

标签: javascript php jquery contact-form

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

现在,当我填写信息并点击发送时,它会给我一条错误信息。我无法看到任何错误,并且错误报告设置为打开(可能在错误的地方),这里是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;
});

我无法真正看到自己犯了什么错误,任何帮助都会受到赞赏!

2 个答案:

答案 0 :(得分:2)

在您的网站中查看您的表单时,您的<input>代码似乎缺少namename字段中的email个属性:

他们需要拥有name="name"name="email",以便.serialize()可以获取这些值并将其带入您的请求中。因此,在PHP中,它们将位于您的$_REQUEST

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

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

所以解决方法是。只需在name="name"个代码上添加name="email"<input>

manual中的实际注释:

  

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

答案 1 :(得分:1)

你的if语句是完全错误的。
您无法使用,分隔2个语句,而应使用||&&分隔。 The Logical Operators文章将让您熟悉这些操作符 另外,$_REQUEST非常不安全。最好不要使用它们。不使用它们的原因解释Here