当用户单击提交表单数据提交到我的 php 时,我希望在thickbox 中打开一个联系表单,该表单将处理该数据并将成功的消息显示回thickbox。php页面被调用,但我将如何获取表单数据?
Yasir
问问题
19217 次
2 回答
9
首先使用thickbox 的iframe 功能将表单加载到thickbox 中。通过将其放在文档的 HTML 头中,确保您已加载 jquery 和thickbox:
<script type="text/javascript" src="/javascripts/jquery.js"></script>
<script type="text/javascript" src="/javascripts/thickbox.js"></script>
<link href="/stylesheets/thickbox.css" rel="stylesheet" type="text/css" />
然后在 iframe 中加载联系我们表单的页面上放置一个链接:
<a href="/contact_us_form.php?KeepThis=true&TB_iframe=true&height=400&width=600&modal=true" class="thickbox" title="Contact Us">Contact Us</a>
您的表单应该具有具有以下基本结构的标记:
<div id="content">
<form id="contact_us" action="/contact_us.php" method="POST">
...
</form>
</div>
现在通过 AJAX 将 jQuery 用于您的表单。把它放在 HTML 文档的头部:
<script type="text/javascript">
jQuery(function($){
$('#contact_us').submit(function(){
$.post($(this).attr('action'), function(html) {
$('#content').html(html)
})
return false
})
})
</script>
这是做什么的:
向表单添加一个函数,以便在提交表单时调用。它返回 false 以防止发生表单提交的默认行为。
此提交功能将使用您设置为的表单操作执行 AJAX 发布
contact_us.php
。最后,这将获取
contact_us.php
返回的任何内容并将 div 的内容替换为 id 内容。
所以让你的contact_us.php
脚本实际发送电子邮件或创建一个数据库记录,不管它做什么,然后让它返回这个 HTML:
<p>Thank you for your submission!</p>
<p><a href="#" onclick="window.parent.tb_remove(); return false">Continue</a>
显然,这可以是您想要的任何内容,您希望最终用户看到的任何消息。该链接向您展示了如何使厚盒窗口消失。
于 2009-02-20T14:57:36.217 回答
2
要发布表单数据,需要使用 jQuery 的序列化函数。
修改上面的例子:
$.post($(this).attr('action'), $(this).serialize(), function(html) {
$('#content').html(html);
});
于 2009-09-22T05:45:11.693 回答