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

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

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

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

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

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

谢谢

【问题讨论】:

    标签: jquery ajax forms jquery-plugins


    【解决方案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>';
    

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

    【讨论】:

    【解决方案6】:

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

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

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

    【讨论】:

    猜你喜欢
    • 2012-08-20
    • 2012-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    相关资源
    最近更新 更多