按下jQuery按钮后发布错误报告

时间:2014-03-20 21:40:30

标签: php jquery forms validation post

这里的小问题,我需要在404页面上放置一个按钮,要求人们提交错误。

问题是实际上什么也没发生,我的意思是没有收到邮件而且没有显示错误,所以我很困惑。

我的报告非常基础,它收集了我的用户在获得404之前所做的所有数据

$site  = "mySite.com";
$email = "donotreply@mySite.com";

$http_host    = $_SERVER['HTTP_HOST'];
$server_name  = $_SERVER['SERVER_NAME'];
$remote_ip    = $_SERVER['REMOTE_ADDR'];
$request_uri  = $_SERVER['REQUEST_URI'];
$cookie       = $_SERVER["HTTP_COOKIE"];
$http_ref     = $_SERVER['HTTP_REFERER'];
$user_agent   = $_SERVER['HTTP_USER_AGENT'];
$error_date   = date("D M j Y g:i:s a T");

$subject = "404 Alert";

$headers  = "Content-Type: text/plain"."\n";
$headers .= "From: ".$site." <".$email.">"."\n";

$message  = "404 Error Report for ".$site."\n";
$message .= "Date: ".$error_date."\n";
$message .= "Requested URL: http://".$http_host.$request_uri."\n";
$message .= "Cookie: ".$cookie."\n";
$message .= "Referrer: ".$http_ref."\n";
$message .= "User Agent: ".$user_agent."\n";
$message .= "IP Address: ".$remote_ip."\n";
$message .= "Whois: http://ws.arin.net/cgi-bin/whois.pl?queryinput=".$remote_ip;

这是我的表单,隐藏所有字段,与上面的php代码放在同一个文件中

<form name="form" method="POST" id="report-form">
<div class="form">
<input type="hidden" name="message" value="$message">
<div class="done">
<p><strong>Thank you!</strong></p>
</div>
<div class="error">
<p><strong>Error!</strong> Sorry, something went wrong, please try again.</p>
</div>
<input type="hidden" name="visitor" value="">
<input type="hidden" name="submitted" value="submitted">
<input type="submit" name="submit" value="Submit" class="formSubmit" />
</div>
</form>
<script type="text/javascript" src="js/report_validation.js"><\/script>

这是我的jQuery验证脚本,我正在尝试使用它,它位于report_validation.js文件夹中名为js的单独文件中

$(document).ready ( function() {

    $('.formSubmit').click(function() {        

        // Store values in variables
        var form = $(this).closest('form');
        var message = form.find('input[name=message]');
        var submitted = form.find('input[name=submitted]');
        var visitor = form.find('input[name=visitor]');

        // Organize data
        var data = 'message=' + message.val() + '&submitted=' + submitted.val() + '&visitor=' + visitor.val();

        var request = $.ajax({
            type: "POST",
            url: "includes/report_form_mail.php",
            data: data,
            cache: false,
            success: function (html) {
                if (html == "true") {
                    form.find('.done').fadeIn(500).delay(4000).fadeOut(500);                    
                }
            },
            error: function(jqXHR, textStatus, error) {

                alert("Form Error: " + error);
            }
        });
        return false;
    });
});

这是我的邮件脚本,它也放在单独的文件中,并在report_form_mail.php文件夹中命名为incudes

// Check if form was submitted
if ($_POST['submitted'] && $_POST['visitor'] == '') {

    // If valid, store values in variables
    $site  = "mySite.com";
    $email = "donotreply@mySite.com";

    $mes = stripslashes($_POST['message']);

    $subject = "404 Alert";
    $headers  = "Content-Type: text/plain"."\n";
    $headers .= "From: ".$site." <".$email.">"."\n";    
    $message = "Message: $mes";

    // Send email
    $sent = mail($email, $subject, $message, $headers);

    if($sent) {
        echo json_encode(true);
    } else {
    echo "Error: Mail could not be send.";
    exit();
    }
} else {
    echo "Error: There was a problem with submitting the form";
    exit();
}

请帮我弄明白

1 个答案:

答案 0 :(得分:0)

我自己实际上发现了一个错误。

jQuery没有正确加载到页面,所以我已经纠正了它,我的表单完全正常。

感谢所有