2013-04-15 31 views
0

您好,我有一個評論系統,它載入了最多10條評論。 我使用JQuery AJAX後發送輸入的數據,然後獲取結果。jQuery showAllComments切換 - 真/假變量

現在我已經添加了一個按鈕,加載所有的消息,該按鈕將再次發送POST和職位將導致PHP加載所有的結果,而不LIMIT 10

一切的偉大的功能,但我有一個小問題。

如果我點擊加載所有郵件按鈕,這將增加所有郵件+不刪除其他10

這是一個容易解決,我只是刪除了另外一個時,它的處理。 但是當我點擊加載所有消息按鈕時,它不會顯示所有消息,它會再次顯示10。

這是因爲javascript一直在執行加載消息過程。

因此,我需要做的是這樣的:

if (loadAll == false) { 
    load10 messages 
} else { 
    load all messages 
} 

但我的問題是:

我怎樣才能做到這一點?我必須定義函數LOADALL爲假(這是默認值),然後我可以這樣做:

$("#loadall").click(function() { 
    loadAll = true; 
}); 

而且之前我可以添加:

var loadAll = true; 

或只是

loadAll = true; 

但是當javascript會處理時,loadAll = false的定義會在你點擊該鏈接後覆蓋true,所以所有註釋都不會加載..

問題

如何在$(「#loadall」)點擊時不使用TRUE覆蓋FALSE。click()? 因此,它會刪除10條評論,然後加載所有評論?

謝謝!

回答

1

你可以使用另一個變量,說

var loadingData = false; 

當你永遠做一個Ajax請求修改變量設置爲true。 請求完成後,將其移回false。 在您執行ajax請求之前開始提取數據時,請檢查這兩個變量。

編輯:

var loadingData = false; 
var loadAll = false; 

function loadMessageFunc{ 
    if(!loadAll && !loadingData) { 
     loadingData = true; 
     //Get Data Here 
     //On Result 
     ... 
     loadingData = false; 
    } 
} 

function loadAllFunc{ 
    if(!loadingData) { 
     loadAll = true; 
     loadingData = true; 
     //Get All Data Here 
     //On Result 
     ... 
     loadAll = true; //If you want to stop load message calls after one load all call 
     loadingData = false; 
    } 
} 

這將確保兩者都沒有得到所謂的在同一時間。您可以相應地清除/加載數據。

+0

你能告訴我一個怎麼樣做的例子嗎? –