2012-07-11 82 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>'); 
    } 
});