jQuery插件冲突 - 请协助

Posted

技术标签:

【中文标题】jQuery插件冲突 - 请协助【英文标题】:jQuery plugin conflicts - please assist 【发布时间】:2011-04-04 21:48:32 【问题描述】:

目的是显示一个表单,该表单将使用结果更新页面上的 div

    加载这个 [page] 点击链接显示表格 提交表格

提交时,如果表单被隐藏,结果不会显示在 div 中。

添加以下答案中建议的代码后,我显示表单,它被提交,但数据没有出现在 div 中我将 ajaxForm 作为目标

[Here] 与在 div 中显示结果的形式相同

谢谢

【问题讨论】:

【参考方案1】:

当您提交表单时,请求被发送到服务器并且您获得 HTTP 错误:405 Method Not Allowed

看起来它来自您服务器的配置。 http://www.checkupdown.com/status/E405.html

编辑:由于您的代码适用于 facy.html 页面中的示例,我认为它并不是真正来自服务器。两个例子的区别在于表单的action

fancy.html:加载一个 php 文件 fancy3.html:加载一个 HTML 文件

您是否尝试将您的 thank you 页面称为“thanks.php”并相应地修改表单的 action。我想您的服务器可能不允许 HTML 页面上的 POST 请求。

【讨论】:

注意:我使用 Firebug 扩展来查看此错误。我建议您尝试使用 Firefox 和此扩展程序:getfirebug.com 我同意这一点,看来 Ben 已经解决了问题。 谢谢。做到了。由于某种原因,我的“DUMP.php”在这里不起作用。【参考方案2】:

我不确定,但你可能是用错误的 id 初始化表单?

$('#formDiv').fadeIn('slow').ajaxForm(options)

当表单 ID 为 feditform 时。在位于http://plungjan.name/eetest/facy.html$('#feditform').ajaxForm(options);的正确示例中

【讨论】:

卫生部。谢谢 现在发生了一些事情。但它实际上并没有显示任何东西。从操作返回时,目标 div 为空白。我已将表单操作更改为仅加载文本“谢谢”,但未显示【参考方案3】:

在不起作用的示例中,如果您在显示表单时绑定 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,它应该可以按预期工作。

【讨论】:

听起来不错。但是,当我在plungjan.name/eetest/facy1.html 实现它时它似乎不起作用 - 每次点击时它都会执行 ajaxForm 是否会成为问题?谢谢!【参考方案4】:

据我所知,您现在拥有:

<div id="formDiv" style="display:none"> some other code here </div>

但你还是打电话给$('#feditform').fadeIn('slow').ajaxForm(options);

就我所见和了解的 jQuery 而言,这永远不会出现,因为周围的 div 是 display:none。我建议做三件事:

先用hide()show()简化代码,这样可以避免一些动画的麻烦。如果可行,您可以继续介绍动画版本。 只需通过jQuery隐藏(document).ready函数上的内容,这样你就可以依赖这些函数了。我们在使用“混合”方法(硬编码和通过 jQuery)方面遇到了糟糕的经历,尤其是在显示和隐藏情况方面。 最后但同样重要的是:某些插件和环境使用$ 确实会引起麻烦。在这些情况下,我们倾向于使用关键字 jQuery,因为这将始终保持范围。

希望这会有所帮助。

【讨论】:

谢谢,我正在淡入表单,而不是表单 div。显示了表单并进行了一些 ajaxing,但目标 div 没有随结果更新。请参阅我修改后的问题。谢谢 查找文档可能有助于将var options 部分直接放在(document).ready 之后和内部作为第一部分。如果你不这样做,可能是 jQuery 中的 DOM 链被破坏了。没有测试过。只是猜测。 不 - 我也没料到它,因为警报显示了。但我猜目标 div 可能超出范围 - plungjan.name/eetest/facy3.html 实现了您的建议【参考方案5】:

我认为您的问题与 jQuery/javascript 无关。

一旦提交表单(我猜是通过 PHP 提交的?),您需要回显一条消息,该消息将作为成功回调的一部分传递。即

echo '<strong>' . $_POST['message'] . '</strong>';

愿意发布您的服务器端代码吗?

【讨论】:

抱歉,我删除了第一个有效的示例。在这里:plungjan.name/eetest/facy.html 我现在只是返回 THANK YOU 也没有显示【参考方案6】:

数据确实出现在您发布的链接中。

如果您认为它与插件冲突有关,请尝试 jquery.noConflict() http://api.jquery.com/jQuery.noConflict/

虽然不是最优雅的解决方案。它可以轻松解决您与插件的任何冲突。

【讨论】:

如果您单击链接并从plungjan.name/eetest/facy2.html 提交表单,您会在页面上的 div 中获得表单转储???

以上是关于jQuery插件冲突 - 请协助的主要内容,如果未能解决你的问题,请参考以下文章

我是不是使用 jQuery noconflict 来避免插件冲突?

关闭引导弹出事件与 jquery 验证插件冲突

用于在 jquery 插件中设置样式以消除冲突的选择器

WordPress 与 OOP jQuery Slider 插件冲突

JQuery的$和其它JS发生冲突的快速解决方法

基于jQuery,这六大表单向导插件首推!