2013-07-11 3 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

отлично работает –

Смежные вопросы