2013-07-11 137 views
1

美好的一天/晚上。我有这种形式的HTML:PHP窗体无需打开新窗口

<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 sript的这种形式作为一个单独的文件:

<?php 
    $receip = "[email protected]"; 
    $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文件中显示一条消息。例如消息“发送的消息”。

另一件事 - 如果我已经有一个验证脚本 - 我需要在这种形式的第一个“如果”?或者我可以完全删除它?重定向到error.html的那个。或者我可以删除这4行吗?我猜 - 这条线是对表单中的错误负责的,但正如我所提到的,我有一个验证脚本。我真的不想改变HTML。如上所述,是否可以修改php脚本在html文档中工作?谢谢

+3

你想看看AJAX。 –

+1

这听起来像你想使用AJAX。 – xsearingheaven

+0

我不知道ajax和php是诚实的。关于php的非常非常基本的知识。任何示例我怎么能做到这一点?还是这个更高级的过程? –

回答

1

这是一个Jquery ajax示例,它可以帮助你。

<?php 
     $receip = "[email protected]"; 
     $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>"; 
     } 
    ?> 

HTML:

<!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> 
+0

谢谢@fobus。让我明天测试一下,因为这里很晚。如果这能做到这一点,我们会接受你的答案。我相信会的。非常感谢。 –

+0

完美 –