PHP如何在邮件发送后阻止页面重定向?

时间:2013-12-31 11:46:02

标签: jquery ajax email php

我有2个单独的文件,代码相同。 contact.html和contact.php 我使用contact.html进行ajax调用以加载内容,并使用contact.php发送邮件。但是我不想让人们重定向到contact.php因为页面崩溃了。 (您也可以尝试填写表格并查看我的问题) 我想要的;是否可以在发送按钮的底部提供“消息已成功发送”消息,并且仍然保留在同一页面中,没有重定向?

click here to see the page

content / contact.php和content / contact.html代码

<div class="section group">
        <!-- Contact Form -->
        <div id="contact-form" class="col span_6_of_12">
            <h2 class="main-heading">
                <span><i class="fa fa-envelope"></i> Contact Me!</span>
            </h2>
<?php
if (isset($_REQUEST['email']))
//if "email" is filled out, send email
  {
  //send email
  $email = $_REQUEST['email'] ;
  $subject = $_REQUEST['subject'] ;
  $message = $_REQUEST['message'] ;
  mail("hiamina@asdkasd.com", $subject,
  $message, "From:" . $email);
  echo "Thank you for using our mail form";
  }
?>  


   <form method="post" action="content/contact.php" id="contactform">
                <p>
                    <label for="name">
                        <b> Your Name</b>
                    </label>
                    <br>
                    <input type="name" name="name" class="input" placeholder="type here">
                </p>
                <p>
                    <label for="email">
                        <b> Your Email</b>
                    </label>
                    <br>
                    <input type="email" name="email" class="input" placeholder="type here">
                </p>
                <p>
                    <label for="message">
                        <b> Your Message</b>
                    </label>
                    <br>
                    <textarea name="message" cols="60" rows="6" id="textarea"></textarea>
                </p>
                <input type="submit" id="submit" name="send" value="Send your message" class="send">
            </form>




        </div>
    <!-- /Contact Form -->


            <div id="space" class="col span_1_of_12"></div>


        <!-- Adress -->
        <div id="adress-container" class="col span_5_of_12">

            <h3><i class="fa fa-users"></i> Get in touch</h3>
            <hr>
            <p>Malis do cernantur qui cillum ullamco sed aliqua fore. Quem in ubi illum doctrina, consequat id multos tempor, senserit multos te admodum comprehenderit, an quem lorem o incurreret ut multos comprehenderit fabulas eram voluptate hic</p>

        </div>
        <!-- /Adress -->

    </div>

4 个答案:

答案 0 :(得分:4)

您应该使用ajax发布它,这将阻止它更改页面,您仍然可以获取信息。

$(function() {
    $('form').submit(function() {
        $.ajax({
            type: 'POST',
            url: 'submit.php',
            data: { username: $(this).name.value, 
                    password: $(this).password.value }
        });
        return false;
    }); 
})

请参阅http://api.jquery.com/jQuery.post/

答案 1 :(得分:0)

我在这里看不到你的ajax部分 但每次在邮件和回显之后都可以使用exit以避免重定向 首先创建一个html文件名email.html

<script>
$(function() {
    $('#contactform').submit(function() {
var name = $('#name').val();
var email =$('#email').val();
var value =$('#textarea').val();
        $.ajax({
            type: 'POST',
            url: 'email.php',
            data: { name:name ,email:email ,text:value  }
        });
        return false;
    }); 
})
</script>
<form method="post" action="content/contact.php" id="contactform">
                    <p>
                        <label for="name">
                            <b> Your Name</b>
                        </label>
                        <br>
                        <input type="name" id="name" class="input" placeholder="type here">
                    </p>
                    <p>
                        <label for="email">
                            <b> Your Email</b>
                        </label>
                        <br>
                        <input type="email" id="email" class="input" placeholder="type here">
                    </p>
                    <p>
                        <label for="message">
                            <b> Your Message</b>
                        </label>
                        <br>
                        <textarea name="message" cols="60" rows="6" id="textarea"></textarea>
                    </p>
                    <input type="submit" id="submit" name="send" value="Send your message" class="send">
                </form>

然后将此代码保存在其他页面中作为email.php

<?php
if (isset($_POST['email']))
//if "email" is filled out, send email
  {
  //send email
  $email = $_REQUEST['email'] ;
  $subject = $_REQUEST['subject'] ;
  $message = $_REQUEST['message'] ;
  mail("hiamina@asdkasd.com", $subject,
  $message, "From:" . $email);
  echo "Thank you for using our mail form";
   exit;
  }
?> 

完成!

答案 2 :(得分:0)

您有一个表单操作,在content / contact.php中发布数据,您可以通过两种方式执行此操作

  • 如果您发布到上面的页面,那么在完成电子邮件发送脚本后,您可以使用header()或javascript重定向到contact.html页面。您可以在会话中设置消息并在重定向后显示该消息,但为此页面应该能够执行PHP脚本(contact.html)

  • 使用Ajax在提交表单时在content / contact.php中发布数据,并在成功时显示消息。

答案 3 :(得分:0)

你无法阻止使用php表单重新加载页面,你需要像这样使用Ajax

$("#submit").click(function(e){

var emailid= "hiamina@asdkasd.com"

jQuery.post("mails.php", {

email:$("#email").val(),
subject:$("#subject").val(),
message:$("#message").val(),
emailid:emailid


},  function(data, textStatus){

if( data == 1)
{
alert("Mail not sent");
e.preventDefault(); 
}
else
{
alert("Mail sent");
e.preventDefault(); 
}

});

});

mails.php

$email = $_POST['email'] ;
  $subject = $_POST['subject'] ;
  $message = $_POST['message'] ;
  $emailid= $_POST['emailid'] ;
  if(mail($emailid, $subject, $message, "From:" . $email))
  echo "2";
else
echo "1";

也改变了这个

<input type="submit" id="submit" name="send" value="Send your message" class="send">

<input type="button" id="submit" name="send" value="Send your message" class="send">