回调函数不起作用:Jquery .load()

时间:2011-11-05 17:39:09

标签: jquery

编辑:我在使用iframe模式框中的jquery在父页面上重新加载div时遇到问题。

父页面上有什么内容? - 只是一个名为“#hidden”的div,它加载一个名为“getcontent.php”的单独的php页面

Iframe模式框上有什么? - 只是一个表格。在表单提交上,它将转到提交页面,我在数据库中进行所有更新。完成所有更新后,我关闭模态框并刷新div的功能进入iframe内部

这是我的代码:

$(document).ready(function() {
    $('#hidden').load('getcontent.php');
    parent.$.fallr('hide', function(){
    });
});

我希望这段代码a)刷新父页面上的div #hidden,然后b)关闭我的模态框。到目前为止关闭模态框工作完美!刷新div不会

2 个答案:

答案 0 :(得分:1)

那里有functinception

parent.$.fallr('hide', function(){
   function(){

答案 1 :(得分:1)

在你的回调函数中你创建了另一个函数,但你没有对它做任何事情。它被创造并扔掉了。如果你删除了最里面的函数,我想它会更好地为你加载:

parent.$.fallr('hide', function(){
     $('#hidden').load(
         'admin/getcontent.php', 
         { pageID : "<? echo $_REQUEST['pageID']; ?>" }
     );
});

可能也是查询字符串失败的原因。不确定它是否能够正确编码。但是,如果将它放在data-parameter中,它应该这样做。见上文。

所以,既然我们已经得到了一个更清晰的解释,并且摆脱了额外的功能和查询字符串(后者可能无论如何都工作正常),我们可以向前推进。

使用当前代码,您要求对话框中的#hidden div加载内容。但是对话框中没有#hidden div,它位于父对象上。使用父级进行前缀。会解决这个问题,但我们还有另一个问题。我们告诉对话框在对话框加载后立即刷新div。那不是我们想要的。我们希望它在关闭对话框时刷新,对吗?因此将其移入fallr回调应该可以解决这个问题。这应该在父母的上下文中运行,所以没有父母。需要前缀。

$(document).ready(function() {
    parent.$.fallr('hide', function(){
        $('#hidden').load('getcontent.php');
    });
});

但是,这或多或少是我们之前所导致的问题,因为上下文不再存在。

所以,对我来说,问题是你正在尝试与孩子的父母一起做事。在我看来,父母应该是做事的人。因此,当对话框准备好关闭时,它应调用父关闭对话框并自行更新的函数:

//From an event on the dialog
parent.closeDialogAndRefresh();

//On the parent define it
function closeDialogAndRefresh() {
    $.fallr('hide');
    $('#hidden').load('getcontent.php');
}

如果这不起作用。尝试启动一个定时器,在50ms之后调用closeDialogAndRefresh或类似的东西。

我认为真正的问题是你使用IFrame而不是从一些体面的UI框架中浮动div。希望你能够到达目的地。