如果你關心性能,知道文章表可以得到多大,以及如何索引是非常重要的。如果文章表格足夠小,以至於生成網頁的其他步驟壓倒兩個查詢(您可能能夠並行化)的成本,那麼只需生成兩個列表,放入兩個div並編寫客戶端JavaScript以顯示只有在選中或取消選中複選框時才能指定div。類似於
<script type="text/javascript">
function updateArticlesList() {
var box = document.getElementById("ckart");
if (box.checked) {
document.getElementById("article0").style.visibility = "collapse";
document.getElementById("article1").style.visibility = "visible";
} else {
document.getElementById("article0").style.visibility = "visible";
document.getElementById("article1").style.visibility = "collapse";
}
}
</script>
<input id="ckart" type="checkbox" onclick="updateArticlesList()">Switch articles list</input>
至少應該照顧問題2。如果文章表大而且查詢速度慢,則必須採取完全不同的路線,並且只有在用戶實際點擊複選框時才填寫丟失的div。在這種情況下,您需要將AJAX調用添加到updateArticlesList函數中。
另一方面,問題1是一個完全不同的問題。我將不得不假設你有一些方法可以在你生成頁面時知道當前用戶是誰,否則試圖說出「用戶之前做了什麼」是沒有意義的。但是,通過上面的代碼,您需要做的唯一事情就是設置divs article0和article1的可見性的初始值以及複選框ckart的可見性。 AJAX涉及將用戶設置保存回服務器的問題。你最好的選擇是向服務器添加一個URL(我有更多的Django體驗,所以我的第一個直覺是一個urls.py條目,儘管我知道這不適用於PHP),以便字符串的後回「0」或「1」會導致設置保存在用戶的配置文件中。在下一頁上,如果用戶的文章可見性設置爲0,則div article0可見,article1被摺疊,並且ckart未被選中。如果用戶的文章可見性設置爲1,則文章0摺疊,文章1可見,並檢查ckart。
我不認爲每次加載兩個div是個好主意,但是我對ajax也不太好,有沒有辦法在沒有ajax幫助的情況下做到這一點?說頁面刷新? Thmx – Ilja