1

好的,所以我有以下代码:

function() { 
$("ul#postbit").load('load.php').fadeIn("slow");
}, 3000);

我想要实现的是在加载 load.php 之后将结果添加到<li>并让它淡入。目前它会覆盖ul#postbit. 我只希望它加载新结果并保留其中的内容。我希望这是有道理的。

4

2 回答 2

9

.load()方法被设计为以这种方式工作,即将Ajax 响应直接加载到您调用它的元素中。尝试使用其他Ajax 方法之一,例如:

$.get("load.php", function(data) {
    $(data).prependTo("#postbit").fadeIn("slow");
});

这假设您的“load.php”返回包含 li 元素的 html,当您说您的当前代码每次都覆盖现有列表时,这似乎是您所描述的。如果您的“load.php”只返回没有<li>标签的新 li 的内容,那么您可以创建 li 并将其添加到前面:

$.get("load.php", function(data) {
    $("<li/>").html(data).prependTo("#postbit").fadeIn("slow");
});

编辑:要让它不断重新加载,您可以将上述内容包装到您调用的函数中setInterval(),或者执行以下操作:

function getMoreData() {
    $.get("load.php", function(data) {
        $(data).prependTo("#postbit").fadeIn("slow");
    }).complete(function() {
        setTimeout(getMoreData, 3000);
    });
}
getMoreData();

这用于在 3 秒后setTimeout()安排另一次运行getMoreData(),但它会在前一个请求完成后执行。

于 2012-07-11T13:23:12.567 回答
0

您应该查看 jQuery API。这是 AJAX 的 API:http: //api.jquery.com/category/ajax/

$.ajax({
    url: 'load.php',
    success: function(data) {
        $("ul#postbit").prepend('<li>'+ data +'</li>');
    }
});
于 2012-07-11T13:24:43.690 回答