JQuery .load() 回调函数

23

我看到很多类似这样的问题和解决方案,但是没有一个对我有用。我有这个:

function() {
    $("#bdiv").load("bosses.php #icc10n",function(){
        return $("#bdiv").html();
    });
}

但是它没有起作用。为了澄清,我想要将内容加载到#bdiv中,然后返回#bdiv的内容。但是似乎$("#bdiv").html()在内容加载之前就被返回了,即使我已经将它放在回调函数中。


你能展示完整的代码吗?为什么要使用匿名函数? - Peter Ajtai
3个回答

53
$("#bdiv").load("bosses.php #icc10n",function(data){
    // use the data param
    // e.g. $(data).find('#icc10n')
});

1
据我所知,在 $.ajax()、$.post()、$.get() 等方法的回调函数中,你不能使用 return 语句。但是,你可以在函数外部声明一个变量来存储 'data' 值,然后在回调函数执行时设置该变量的值。此外,还有其他各种选项可供选择。

0

你不能那样做。

AJAX是“异步”的,这意味着服务器发送响应之前,您的函数将返回。
您需要使用回调将值传递给调用者,就像$.load一样的方式。


@Onkelborg:他需要通过自己的回调函数返回值。 - SLaks
“.html()” 是在函数声明时被评估,而不是在调用时评估,对吗? - salezica
@Santiago:完全错误。return语句是从内部回调方法返回的;这个返回值被jQuery忽略了。外部函数立即返回。 - SLaks
称呼我慢吧,但我仍然不太明白它是如何完成的,以及为什么上述方法不起作用。我知道这不是我的问题,但您介意添加一个示例和/或进一步解释一下吗?这引起了我的好奇心! - salezica

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接