Javascript 防止联系人表单在提交后消失

Javascript 防止联系人表单在提交后消失,javascript,php,jquery,html,forms,Javascript,Php,Jquery,Html,Forms,我有以下PHP代码: <?php $subjectPrefix = '[Contact via Site]'; $emailTo = 'blabla@domain.com'; if($_SERVER['REQUEST_METHOD'] == 'POST') { $name = stripslashes(trim($_POST['form-name'])); $email = stripslashes(trim($_POST['form-email']));

我有以下
PHP
代码:

<?php
$subjectPrefix = '[Contact via Site]';
$emailTo = 'blabla@domain.com';

if($_SERVER['REQUEST_METHOD'] == 'POST') {
    $name    = stripslashes(trim($_POST['form-name']));
    $email   = stripslashes(trim($_POST['form-email']));
    $phone   = stripslashes(trim($_POST['form-tel']));
    $subject = stripslashes(trim($_POST['form-assunto']));
    $message = stripslashes(trim($_POST['form-mensagem']));
    $pattern = '/[\r\n]|Content-Type:|Bcc:|Cc:/i';

    if (preg_match($pattern, $name) || preg_match($pattern, $email) || preg_match($pattern, $subject)) {
        die("Header injection detected");
    }

    $emailIsValid = filter_var($email, FILTER_VALIDATE_EMAIL);

    if($name && $email && $emailIsValid && $subject && $message){
        $subject = "$subjectPrefix $subject";
        $body = "Nume: $name <br /> Email: $email <br /> Telefon: $phone <br /> Mesaj: $message";

        $headers .= sprintf( 'Return-Path: %s%s', $email, PHP_EOL );
        $headers .= sprintf( 'From: %s%s', $email, PHP_EOL );
        $headers .= sprintf( 'Reply-To: %s%s', $email, PHP_EOL );
        $headers .= sprintf( 'Message-ID: <%s@%s>%s', md5( uniqid( rand( ), true ) ), $_SERVER[ 'HTTP_HOST' ], PHP_EOL );
        $headers .= sprintf( 'X-Priority: %d%s', 3, PHP_EOL );
        $headers .= sprintf( 'X-Mailer: PHP/%s%s', phpversion( ), PHP_EOL );
        $headers .= sprintf( 'Disposition-Notification-To: %s%s', $email, PHP_EOL );
        $headers .= sprintf( 'MIME-Version: 1.0%s', PHP_EOL );
        $headers .= sprintf( 'Content-Transfer-Encoding: 8bit%s', PHP_EOL );
        $headers .= sprintf( 'Content-Type: text/html; charset="utf-8"%s', PHP_EOL );

        mail($emailTo, "=?utf-8?B?".base64_encode($subject)."?=", $body, $headers);
        $emailSent = true;
    } else {
        $hasError = true;
    }
} 
?> 

在用户提交联系人表单后,它消失了,我真的不明白为什么会发生这种情况,我如何才能摆脱这部分。有人能指出提交后隐藏它的部分吗?

您要做的是删除发送到服务器的表单操作

<form id="contact-form" role="form" method="post">

$\u服务器['REQUEST\u URI']
操作
属性中将是
/?查询字符串中的任何内容
可能都没有,除非您从锚定标记的
href
属性运行此表单

而不是脚本/页面名称

这将把脚本名称放入您运行以显示输入页面的页面的
action
属性中

<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" id="contact-form" role="form" method="post">

既然您已经在使用contact-form.js,为什么不呢


表单正在消失,因为您正在将表单提交到新页面并进行重定向。使用AJAX,您可以更好地控制整个提交过程。

因为表单提交到服务器?@epascarello,我如何将其保留在页面上?
<form id="contact-form" role="form" method="post">
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" id="contact-form" role="form" method="post">
<form id="contact-form" role="form" method="post">