2012-07-11 57 views
1

好了,所以我有以下代码:的JQuery load()和.prepend()

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

我所试图实现的是装载load.php后预先设置导致对<li>并让它褪色目前它会覆盖ul#postbit中的内容。我只希望它能够加载新的结果并保留内部的内容。我希望这是有道理的。

回答

8

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

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

这里假设你的“load.php”返回的HTML包括li元素,这是你仿佛被描述时,你说你当前的代码将覆盖现有的列表每一次。如果你的“load.php”新里只返回内容不<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(); 

这使用setTimeout()安排的getMoreData() 3秒后另一个运行,但它以前的请求完成打完。

+0

这就是我一直在寻找的感谢。最后一件事,我怎样才能让它每隔3秒不断加载文件? – Sygon 2012-07-11 13:31:59

+0

使用setTimeout()是最好的方法吗?或者是有更好的解决方案 – Sygon 2012-07-11 13:36:55

+0

我会使用'setTimeout()'。有几种方法可以做到这一点 - 我已经用一种方式更新了我的答案。 – nnnnnn 2012-07-11 13:41:55

0

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

$.ajax({ 
    url: 'load.php', 
    success: function(data) { 
     $("ul#postbit").prepend('<li>'+ data +'</li>'); 
    } 
});