我有一个执行PHP操作的联系表单。联系表单与jQuery中的验证引擎相关联。如果正确发送了messege,我只需要包含带有感谢消息的PHP文件 - require_once('success.php');
。发送消息后,我想用感谢信息替换联系表格而不重新加载整个页面。请给我一些建议如何做到这一点。
这是我的HTML:
<div id="contactForm">
<form id="expertForm" class="formular" method="post" action="send.php">
<fieldset>
<label>
<input name="email"
id="email"
class="required email"
type="text"
size="40"/>
</label>
<p>
<textarea name="body" id="body" rows="5" cols="50" class="required"></textarea>
</p>
</fieldset>
<input class="submit"
type="image"
src="../images/btn-send.png"/>
</form>
</div>
<script type="text/javascript">
$("#expertForm").validate();
</script>
在send.php
我有:
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
require_once('success.php');
}
答案 0 :(得分:3)
你最好给我们一些代码,以便我们可以提供帮助。
以下是理论上的方法:使用jquery success
[ref]调用的ajax
事件:
$.ajax({
url: "test.html",
context: document.body,
success: function(){
$("#myformdiv").html("Thanks!");
}
});
假设您的HTML标记类似于:
<div id="myformdiv">
<form>
<!-- form code here -->
</form>
</div>
答案 1 :(得分:3)
您可以在http://jsfiddle.net/v7MJA/1/
看到几乎工作演示$(function(){
$("#expertForm").submit(function(e){
e.preventDefault();
if(!$(this).validate().form()) return false;
$.ajax({
url:$(this).attr('action'),
data:$(this).serialize(),
type:'post',
success:function(msg){
$("#expertForm").replaceWith(msg);
}
});
});
});
答案 2 :(得分:2)
假设我已正确理解您的问题,您可以使用replaceWith
方法将匹配的元素替换为指定的内容:
$("#yourForm").replaceWith("<p>Thanks!</p>");
我假设你正在异步地将表单数据发送到服务器,所以你可以在回调中运行上面的代码:
$.post("yourScript.php", function() {
$("#yourForm").replaceWith("<p>Thanks!</p>");
});