2012-02-16 46 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 
     } 
    }); 
});