2012-02-16 15 views
0

我得到我的腳與形式處理溼,所以忍受着我。我有一個基本的HTML表單和一個發送郵件的腳本。目前它發送並刷新以提供反饋。我想要的是如果反饋可以在不刷新頁面的情況下給出。沒有頁面刷新的形式反饋

HTML

<html> 
<head> 
<title>E-Mail Form</title> 
</head> 
<body> 
<form action="beta_sendmail.php" method="POST"> 
<p><strong>Name: </strong><br/> 
<input type="text" size="25" name="name" /></p> 
<p><strong>E-Mail Address: </strong><br /> 
<input type="text" size="25" name="email" /></p> 
<p><strong>Message: </strong><br /> 
<textarea name="message" cols="30" rows="5"></textarea></p> 
<p><input type="submit" value="send" /></p> 
</form> 
</body> 
</html> 

和PHP

<html> 
<head> 
<title>Mail Sending Script</title> 
</head> 
<body> 
<?php 
echo "<p>Thank you, <b>".$_POST["name"]."</b>, for your message!</p>"; 
echo "<p>Your email address is: <b>".$_POST["email"]."</b>.</p>"; 
echo "<p>Your message was: <br/>"; 
echo $_POST["message"]."</p>"; 
//start building the mail string 
$msg = "Name: ".$_POST["name"]."\n"; 
$msg .= "E-Mail: ".$_POST["email"]."\n"; 
$msg .= "Message: ".$_POST["message"]."\n"; 
//set up the mail 
$recipient = "[email protected]"; 
$subject = "Form Submission Results"; 
$mailheaders = "From: My Web Site <[email protected]> \n"; 
$mailheaders = "Reply-To: ".$_POST["email"]; 
//send the mail 
mail($recipient, $subject, $msg, $mailheaders); 
?> 
</body> 
</html> 
+3

爲此,你需要AJAX。開始在這裏尋找並獲得基本的AJAX教程。 JavaScript庫(特別是jQuery)使得開始非常容易... – 2012-02-16 15:27:14

+0

您的問題得到了解答嗎?如果不是,我們需要反饋。 – James 2012-02-16 16:54:34

+0

到目前爲止,我只能標記出那些有用的答案。一旦我已經通過答案和建議,我會讓你知道;) – Andy 2012-02-16 17:34:10

回答

2

如果你使用jQuery,作爲@邁克爾的建議,並且我還建議,這裏是一個偉大的教程做的正是:http://net.tutsplus.com/tutorials/javascript-ajax/submit-a-form-without-page-refresh-using-jquery/

在本質上有三個部分:

1)HTML表單

2)的Javascript/jQuery的

  • 把手形式提交事件。你可以在這裏做客戶端驗證,如果滿意,通過AJAX將表單提交給你的php腳本進行處理。

3)PHP腳本

  • 處理表單的服務器側處理。將數據返回給您的JavaScript,以便您可以繼續處理並根據需要執行任何操作。
+0

這是一個很好的教程,前提是您已經有了像上面那樣的sendmail腳本。 – Andy 2012-02-16 20:00:38

1

這就是你需要開始學習AJAX。它的目的完成你正在做的事情。它代表異步Javascript和XML。

+0

那你怎麼做? – Shoe 2012-02-16 15:31:34

1

你可以去2種方式:

1)尋找到一些JavaScript,完成該工作對你來說,最有可能AJAX,通過jQueryDojo或者,如果你是一個受虐狂,手。

2)在你的頁面有一個iframe的地方,並讓您的形式target是iframe的 - 這可能是攜帶表單的頁面的一部分 - 所以頁面的最大部分將停滯不前,而形式是取而代之的是「謝謝」信息。

1

你不得不使用jQuery。這樣的事情:

$("form").submit(function(event){ 
    event.preventDefault(); 

    var dataString = 'postVariableName=' + $("postVariableValue").val() + '&postVariableName=' + $("postVariableValue").val(); 

    //alert (dataString);return false; //to check the string being sent 
    $.ajax({ 
     type: "POST", 
     url: "postPath.php", 
     data: dataString, 
     success: function(data) { 
      //create jquery object from the response html 
      var $response=$(data); 

      //query the jq object for the values 
      var title = $response.filter('div#title').text(); //Check the resulting post page output for a div with an ID of "title", and put it's text into a variable called "title" 
      var cbody = $response.filter('div#cbody').html(); //Check the resulting post page output for a div with an ID of "cbody", and put it's html into a variable called "cbody" 

      $("input#title").val(title); //Display the title on the page 
      $("div#cbody").html(cbody); //Display the cbody on the page 
     } 
    }); 
});