【发布时间】:2011-04-04 21:48:32
【问题描述】:
目的是显示一个表单,该表单将使用结果更新页面上的 div
- 加载这个 [page]
- 点击链接显示表格
- 提交表格
提交时,如果表单被隐藏,结果不会显示在 div 中。
-
添加以下答案中建议的代码后,我显示表单,它被提交,但数据没有出现在 div 中我将 ajaxForm 作为目标
[Here] 与在 div 中显示结果的形式相同
谢谢
【问题讨论】:
标签: jquery ajax forms jquery-plugins
目的是显示一个表单,该表单将使用结果更新页面上的 div
提交时,如果表单被隐藏,结果不会显示在 div 中。
添加以下答案中建议的代码后,我显示表单,它被提交,但数据没有出现在 div 中我将 ajaxForm 作为目标
[Here] 与在 div 中显示结果的形式相同
谢谢
【问题讨论】:
标签: jquery ajax forms jquery-plugins
当您提交表单时,请求被发送到服务器并且您获得 HTTP 错误:405 Method Not Allowed。
看起来它来自您服务器的配置。 http://www.checkupdown.com/status/E405.html
编辑:由于您的代码适用于 facy.html 页面中的示例,我认为它并不是真正来自服务器。两个例子的区别在于表单的action。
您是否尝试将您的 thank you 页面称为“thanks.php”并相应地修改表单的 action。我想您的服务器可能不允许 HTML 页面上的 POST 请求。
【讨论】:
我不确定,但你可能是用错误的 id 初始化表单?
$('#formDiv').fadeIn('slow').ajaxForm(options)
当表单 ID 为 feditform 时。在位于http://plungjan.name/eetest/facy.html$('#feditform').ajaxForm(options);的正确示例中
【讨论】:
在不起作用的示例中,如果您在显示表单时绑定 ajaxForm,它应该可以正常工作。
// you may want to use better/faster selector then 'a' but in this example it
// will work
$('a').click(function () {
$('#feditform').fadeIn('slow').ajaxForm(options);
return false;
});
在上面添加而不是jQuery.facybox({ div: '#formDiv' }); return false,它应该可以按预期工作。
【讨论】:
据我所知,您现在拥有:
<div id="formDiv" style="display:none">
some other code here </div>
但你还是打电话给$('#feditform').fadeIn('slow').ajaxForm(options);
就我所见和了解的 jQuery 而言,这永远不会出现,因为周围的 div 是 display:none。我建议做三件事:
hide()和show()简化代码,这样可以避免一些动画的麻烦。如果可行,您可以继续介绍动画版本。(document).ready函数上的内容,这样你就可以依赖这些函数了。我们在使用“混合”方法(硬编码和通过 jQuery)方面遇到了糟糕的经历,尤其是在显示和隐藏情况方面。$ 确实会引起麻烦。在这些情况下,我们倾向于使用关键字 jQuery,因为这将始终保持范围。希望这会有所帮助。
【讨论】:
var options 部分直接放在(document).ready 之后和内部作为第一部分。如果你不这样做,可能是 jQuery 中的 DOM 链被破坏了。没有测试过。只是猜测。
我认为您的问题与 jQuery/Javascript 无关。
一旦提交表单(我猜是通过 PHP 提交的?),您需要回显一条消息,该消息将作为成功回调的一部分传递。即
echo '<strong>' . $_POST['message'] . '</strong>';
愿意发布您的服务器端代码吗?
【讨论】:
数据确实出现在您发布的链接中。
如果您认为它与插件冲突有关,请尝试 jquery.noConflict() http://api.jquery.com/jQuery.noConflict/
虽然不是最优雅的解决方案。它可以轻松解决您与插件的任何冲突。
【讨论】: