2010-08-27 144 views
2

的目的是要表明一种形式,将更新页面上的分度,结果jQuery插件冲突 - 请帮助

  1. 负荷这个[page]
  2. 点击linkto形式展现
  3. 提交表格

提交时,如果窗体已隐藏,结果不会显示在div中。

  • 将在下面回答问题建议的代码后,我将展示形式,它被提交,但数据不会在div出现我给给ajaxForm为目标

    [Here]是的这确实显示的结果在div

感谢

回答

1

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

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

编辑:为你的代码适用于您的例子在facy.html页,我认为它并没有真正来自服务器。这两个示例的区别在于动作的形式。

  • fancy.html:您加载一个PHP文件
  • fancy3.html:加载HTML文件

你尝试打电话给你谢谢页 “thanks.php” 和相应地修改表单的动作。我想你的服务器可能不允许在HTML页面上发布POST请求。

+0

注意:我使用Firebug扩展来查看此错误。我建议你用Firefox和这个扩展名尝试一下:http://getfirebug.com/ – Ben 2010-09-06 09:08:26

+0

我其次,看起来像本已经解决了这个问题。 – dpq 2010-09-06 10:37:33

+0

谢谢。那样做了。出于某种原因,我的“DUMP.php”在这里不起作用。 – mplungjan 2010-09-11 06:56:56

0

在不工作,如果你绑定给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它应该按预期工作。

+0

听起来不错。然而,当我在http://plungjan.name/eetest/facy1.html上实现它时似乎不起作用 - 它也会成为一个问题,它在每次点击时都会执行ajaxForm?谢谢! – mplungjan 2010-08-31 07:43:11

0

至于我可以看到你现在有:

<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,因为这将始终保持范围。

希望这会有所帮助。

+0

谢谢,我在表格中淡出,而不是表格div。显示窗体并发生一些AJAXING,但目标div不会更新结果。看到我修正的问题。谢谢 – mplungjan 2010-09-01 06:51:22

+0

查看文档可能有助于将'var options'部分直接放在'(document).ready'后面并作为第一部分。如果你不这样做,可能是jQuery中的DOM链被破坏了。没有测试过它。只是一个猜测。 – mic 2010-09-01 20:56:14

+0

不 - 我从没有预料到警报显示。但我猜目标div可能超出范围 - http://www.plungjan.name/eetest/facy3.html实现您的建议 – mplungjan 2010-09-02 06:27:54

0

我不认为你的问题是jQuery/Javascript相关。

一旦表单被提交(通过PHP,我假设?),你需要回显一个消息,这将作为成功回调的一部分传递。即

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

小心发布你的服务器端代码?

+0

对不起,我删除了第一个有效的例子。它在这里:http://plungjan.name/eetest/facy.html – mplungjan 2010-09-01 07:27:54

+0

我现在只是返回谢谢你,也不显示 – mplungjan 2010-09-05 06:31:26

0

这些数据确实在您发布的链接中显示。

如果你认为这是对插件冲突尝试jquery.noConflict() http://api.jquery.com/jQuery.noConflict/

虽然不是最完美的解决方案有关。它可以轻松解决您与插件存在的任何冲突。

+0

如果你点击链接并从http://plungjan.name/提交表格eetest/facy2.html你在页面中的div内获得了转储形式? – mplungjan 2010-09-03 08:22:24

1

我不确定,但可能是你的初始形式与错误的ID?

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

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

+0

DOH。谢谢现在发生。但它并没有显示任何内容。从动作返回时目标div是空白的。 我已将表单操作更改为仅加载文本“谢谢”,但未显示 – mplungjan 2010-09-04 06:11:29