簡體   English   中英

提交聯系表格后如何防止PHP文件彈出?

[英]How do I prevent PHP file from popping up after submitting contact form?

現在,每當我單擊網站上聯系表單上的“提交”按鈕時,它就會帶我到www.mysite.com/php/function/email.php頁面,而不是像我想要的那樣在后台運行email.php它來。

該網站應該允許您提交聯系表,然后該按鈕將消失並消失在“您的消息已發送!”中,然后消失。

HTML:

<form name="contact form" id='contact_form' method="post" action="php/function/email.php">
<div class="row half">
    <div class="6u">
        <input name="name" placeholder="Name" type="text" class="text" />
    </div>
    <div class="6u">
        <input name="email" placeholder="Email" type="email" class="text" />
    </div>
</div>
<div class="row half">
    <div class="12u">
        <textarea name="message" placeholder="Message"></textarea>
    </div>
</div>
<div class="row half">
    <div class="12u">
        <input id="submit" name="submit" type="submit" value="Send Message" class="button button-icon icon icon-envelope" />
    </div>
</div>
<p id="success" style="display:none">Your message has been sent! I'll get back to you soon!</p>
        <p id="error" style="display:none">Please fill in all the fields and try again!</p>

JS:

 $(document).ready(function(){
    $('#send_message').click(function(e){

        //Stop form submission & check the validation
        e.preventDefault();

        // Variable declaration
        var name = $('#name').val();
        var email = $('#email').val();
        var subject = $('#subject').val();
        var message = $('#message').val();

       // Disable submit button just after the form processed 1st time successfully.
        $('#send_message').attr({'disabled' : 'true', 'value' : 'Sending...' });

        /* Post Ajax function of jQuery to get all the data from the submission of the form as soon as the form sends the values to email.php*/
        $.post("email.php", $("#contact_form").serialize(),function(result){
            //Check the result set from email.php file.
            if(result == 'sent'){
                //If the email is sent successfully, remove the submit button
                 $('#submit').remove();
                //Display the success message
                $('#success').fadeIn(500);
            }else{
                //Display the error message
                $('#error').fadeIn(500);
                // Enable the submit button again
                $('#submit').removeAttr('disabled').attr('value', 'Send The Message');
            }
        });
    }
});    
};

PHP:

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$from = 'From: Example'; 
$to = 'example@gmail.com'; 
$subject = 'Example Contact Form';

$body = "
From: $name
Email: $email
---------------
Message: \n
$message";
if ($_POST['submit']) {              
    if (mail ($to, $subject, $body, $from)) { 
    echo 'sent';
} else { 
    echo 'failed';
}
}
?>

問題是,你正在尋找點擊事件的#send_message但你的提交按鈕有一個ID submit 因此,單擊事件永遠不會發生。

<input type="submit">.click()事件實際上並不是導致重定向的原因。 相反,它在<form>處成為.submit()事件

您可以e.stopPropagation()使其不到達<form>

//Stop form submission & check the validation
e.stopPropagation();

preventDefault()的的<form>.submit()

$('#contact_form').submit(function (e) {
    e.preventDefault();
});

注意:您還應該考慮將代碼移至.submit()處理程序中,因為大多數瀏覽器支持其他方式來提交<form>不是實際單擊<input type="submit">

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM