2015-08-13 108 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.如果響應代碼正常,則使用javascript更新html以顯示消息... – brso05

+0

因此,可以提供任何信息來說明我的示例如何實現?從字面上看,當按下按鈕時,會出現一條消息,提示「謝謝」 – Thomas

+0

嗯,您正在使用表單提交到'contactus.php'而不是使用表單我會將您的參數傳遞給同一個'contactus.php'文件通過'AJAX'調用。然後讓'contactus.php'返回一些類似「ok」或「failed」的響應。在'AJAX'調用的成功回調函數中,只需檢查響應是「ok」還是「failed」,然後使用'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

@Thomas對不起雅我不認爲你通過形式提交嘗試什麼傑夫說... – brso05

+0

@Thomas注意'contactus.php?message = 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

This看起來應該可以工作,但'成功'不會顯示任何地方 – Thomas

+0

確認您將表單提交到同一個地方。驗證該變量是否已設置。驗證打印語句是否在正確的位置。希望其中之一是問題 – Jeff

+0

print語句應該在哪裏? – Thomas