1

美好的一天/晚上。我在 HTML 中有这种形式:

<form action="scripts/form-testimonial.php" class="form" method="post">
  <ul>
    <li><label for="name">Name</label> <input class="required" id="namef3" name="name" placeholder="Name" type="text"></li>
    <li><label for="email">E-mail</label> <input class="required" id="emailf3" name="email" placeholder="E-mail" type="text"></li>
    <li><label for="company">Company</label> <input id="companyf3" name="company" placeholder="Company (if applicable)" type="text"></li>
    <li><label for="msg">Message</label> <textarea class="required" cols="43" id="msgf3" name="msg" placeholder="Your feedback" rows="8"></textarea></li>
  </ul>
  <button class="submit" type="submit">Send your feedback</button>
</form>

并将这种形式的 php 脚本作为单独的文件:

<?php
  $receip = "office@avehire.co.uk";
  $subj = "Testimonial";
  $bodymsg = "Name: ".$_POST['name']."\n"
               ."Company: ".$_POST['company']."\n"
               ."Email: ".$_POST['email']."\n"
               ."Message: ".$_POST['msg']."\n";

      if(!$_POST['msg']){
             header("Location: ../error.html");
             exit;
      }

  $email = $_POST['email'];
  if(mail($receip, $subj, $bodymsg, 'From: Contact <'.$email.'>')){
  header("Location: ../msg_sent_feedback.html"); 
  }
?>

我也有这个表单的验证器,但这并不重要。这里更重要的是这种形式的工作方式。基本上 - 当您单击提交按钮时 - 它会转到一个单独的 php 文件,处理表单,然后 - 从已经存在的内容 - 转到 msg_sent_feedback.html 文件。我想要做的是不打开一个单独的文件,而只是在实际表单存在的同一个基本 html 文件中显示一条消息。一条消息,例如“消息已发送”。

另一件事——如果我已经有一个验证脚本——我是否需要在这个表单中包含第一个“if”?或者我可以完全删除它吗?重定向到error.html的那个。或者我可以删除这 4 行吗?那行 - 我猜 - 负责表单中的错误,但正如我所提到的,我有一个验证脚本。我真的不想更改html。是否可以按照上面的说明修改 php 脚本以在 html 文档中工作?谢谢

4

1 回答 1

1

这是一个可以帮助您的 Jquery ajax 示例。

<?php
      $receip = "office@avehire.co.uk";
      $subj = "Testimonial";
      $bodymsg = "Name: ".$_POST['name']."\n"
                   ."Company: ".$_POST['company']."\n"
                   ."Email: ".$_POST['email']."\n"
                   ."Message: ".$_POST['msg']."\n";

          if(!$_POST['msg']){
                 echo "<h1>Error sending e-mail";
                 exit;
          }

      $email = $_POST['email'];
      if(mail($receip, $subj, $bodymsg, 'From: Contact <'.$email.'>')){
        echo "<h1>Email sent successfully</h1>";
      }
    ?>

网页:

<!Doctype html>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

<script type="text/javascript">

function submitmyform(){
    data=$('#myform').serialize();
        $.ajax({
        url: "myphpfile.php",
        type:'POST',
        data:data,
        async:false,
        dataType:'html',
        success: function(msg){

            $('#response_goes_here').html(msg);

        }
    });

}

</script>

    <form action="" id="myform">

        <ul>
            <li>    <label for="name">Name</label>              <input id="namef3" name="name" type="text" placeholder="Name" class="required"/>            
          </li>
            <li>    <label for="email">E-mail</label>           <input id="emailf3" name="email" type="text" placeholder="E-mail" class="required"/>        
          </li>
            <li>    <label for="company">Company</label>        <input id="companyf3" name="company" type="text" placeholder="Company (if applicable)" />   
          </li>
            <li>    <label for="msg">Message</label>            <textarea id="msgf3" name="msg" cols="43" rows="8" placeholder="Your feedback" class="required"></textarea> 
          </li>
        </ul>
        <button type="button" class="button" onclick="submitmyform();">Send your feedback</button>
    </form>

<div id="response_goes_here"></div>
于 2013-07-11T21:37:28.147 回答