2015-08-13 3 views
0

Я следующий вид:Форма сообщения оповещения

<form method="post" action="contactus.php" name="myForm" autocomplete="off"> 
      <label for="Name">Name:</label> 
      <input type="text" name="Name" id="Name" maxlength="60" required/> 

      <label for="email">Email:</label> 
      <input type="text" name="email" id="email" maxlength="120" required/> 

      <label for="message">Message:</label><br /> 
      <textarea name="message" rows="20" cols="20" id="message" required></textarea> 

      <input type="submit" name="submit" value="Submit" class="submit-button" /> 

     </form> 

А некоторые PHP, который отправляет электронную почту, то PHP находится на той же странице, что и форма (contactus.php), и я хочу сообщение прийти где-то на странице (а не всплывающее окно), чтобы сообщить пользователю, что отправлено письмо (письмо не нужно проверять, просто для нажатия кнопки). Это может быть сделано в PHP, AJAX или JS Я не против

+1

Вы можете использовать все 3, чтобы выполнить это: 1. Создайте службу для отправки электронной почты и возврата кода ответа. 2. Вызовите службу через AJAX 3. Если код ответа одобрен, то обновите html, используя javascript, чтобы отобразить сообщение ... – brso05

+0

Итак, может предоставить любую информацию о том, как это делается в отношении моего примера? Буквально, когда нажата кнопка, появляется сообщение «спасибо» – Thomas

+0

Ну, вы используете форму для отправки 'contactus.php' вместо использования формы, которую я передал бы вашим параметрам в тот же' contactus.php' файл через вызов AJAX. Затем возвращайте 'contactus.php' какой-то ответ вроде« ok »или« failed ». В функции обратного вызова успеха вызова «AJAX» просто проверьте, соответствует ли ответ «нормально» или «не удалось», а затем используйте «Javascript» для обновления «HTML», чтобы отобразить соответствующее сообщение ... Это непростая вещь Я могу просто показать вам, что я могу привести вам пример, но у него не будет всего кода, который вам нужен ... – brso05

ответ

0

HTML код -

<p style="display:none">Mail Send Successfully </p> 
<form method="post" action="contactus.php" name="myForm" autocomplete="off"> 
      <label for="Name">Name:</label> 
      <input type="text" name="Name" id="Name" maxlength="60" required/> 

      <label for="email">Email:</label> 
      <input type="text" name="email" id="email" maxlength="120" required/> 

      <label for="message">Message:</label><br /> 
      <textarea name="message" rows="20" cols="20" id="message" required></textarea> 

      <input id="submit-btn" type="submit" name="submit" value="Submit" class="submit-button" /> 

     </form> 

AJAX код -

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
     <script type="text/javascript"> 
     $(document).ready(function(){ 
      $('#submit-btn').click(function(){ 
       var name = $('#name').val(); 
       var email = $('#email').val(); 
       var message = $('#message').val(); 

       $.ajax({ 
       type: "POST", 
       url: "form-submit.php", // in this file we will put the code of send email and also we will return a response 
       data:"name="+name+"&email="+email+"&message="+message, 
       success: function(response) // we will get response 
        { 
         $('p').show(); // here message will show after send email 
        } 
       }); 
     }); 
     }); 
     </script> 
+0

Что вы имели в виду под «а также мы вернем ответ»? – Thomas

+0

form-submit.php файл возвращает ответ, например if (email_send) {echo «Success»; } // будет ответ –

0
<form method="post" action="contactus.php?message=ok" name="myForm" autocomplete="off"> 
    <label for="Name">Name:</label> 
    <input type="text" name="Name" id="Name" maxlength="60" required/> 

    <label for="email">Email:</label> 
    <input type="text" name="email" id="email" maxlength="120" required/> 

    <label for="message">Message:</label><br /> 
    <textarea name="message" rows="20" cols="20" id="message" required</textarea> 

    <input type="submit" name="submit" value="Submit" class="submit-button" /> 
</form> 
<div id="displayMessage"></div>*****************new div to display message put wherever you want****************** 

Javascript:

<script> 
     function getParameterByName(name) { 
      name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); 
      var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), 
      results = regex.exec(location.search); 
      return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); 
     } 
     if(getParameterByName("message") == "ok") 
     { 
      document.getElementById("displayMessage").innerHTML = "Message Sent."; 
      window.alert("Message Sent.");//If you want an alert box 
     } 
<script> 

Просто положите <script></script> в конец вашего тела ...

+0

Спасибо. Это похоже на то, что он будет работать, но не будет, когда я нажму кнопку, электронная почта отправит, перезагрузит страницы и ничего не изменится. – Thomas

+0

@ Темус жаль, я не думаю, что вы отправляете через форму, попробуйте, что сказал Джефф ... – brso05

+0

@Thomas обратите внимание на сообщение contactus.php? ok. – brso05

0

Если PHP, который отправляет почту на той же странице, я предполагаю, что структура, как это:

<?php 
if (isset($_POST['email']) && strlen($_POST['email') { 
    mail("[email protected]", "subject", "text"); 
} 
?> 

Я рекомендую вам добавить переменную там, как это:

<?php 
if (isset($_POST['email']) && strlen($_POST['email') { 
    mail("[email protected]", "subject", "text"); 
    $sent_mail = true; // so we know later 
} 
?> 

Тогда где-то на странице, не делайте этого:

<?php 
if (isset($sent_mail)) { 
    echo 'Success!'; 
} 
?> 

нет JavaScript, необходимый :)

+0

Это похоже, что он должен работать, но «успех» нигде не отображается. – Thomas

+0

Проверьте, что вы отправляете форму на одно и то же место. Убедитесь, что переменная установлена. Убедитесь, что оператор печати находится в нужном месте. Надеюсь, одна из них - проблема – Jeff

+0

Где должен быть оператор печати? – Thomas

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