我對JavaScript,Node.js或Socket.io沒有多少經驗。我試圖用jQuery分頁插件http://beneverard.github.com/jqPagination/創建一個應用程序,用於查詢mysql數據庫(用戶輸入到文本框中的關鍵字),獲取結果總數以及首頁的前15個結果(使用LIMIT)然後使用結果總數來確定需要多少頁面。訪問socket.io回調函數之外的變量
這裏是代碼片段(客戶端JavaScript設置爲分頁的最大頁數),我不能去上班:
var maxpagenumber;
socket.on('resultsnumber', function(count)
{
maxpagenumber = ~ ~(this.count/15) + 1;
});
$('.pagination').jqPagination({
max_page: maxpagenumber,
paged: function(page)
{
...
}
});
我看着Chrome的變量maxpagenumber,發現它是未定義的。查詢前15個結果的作品只是分頁只顯示一個最大頁面。
當我在網上尋找幫助時,我發現一個關於訪問異步回調函數之外的變量的問題:Using variable outside of ajax callback function。我用這個想法從明顯的答案,並將其應用到我的代碼:
var setPagination = function(maxpagenum)
{
$('.pagination').jqPagination({
max_page: maxpagenum,
paged: function(page)
{
...
}
});
}
socket.on('databasenumber', function(count)
{
var maxpagenumber = ~ ~(this.count/15) + 1;
setPagination(maxpagenumber);
});
這給了相同的結果上面的代碼片斷。唯一的工作選擇我到目前爲止是這樣的:
socket.on('databasenumber', function(count)
{
var maxpagenumber = ~ ~(this.count/15) + 1;
$('.pagination').jqPagination({
max_page: maxpagenumber,
paged: function(page)
{
...
}
});
});
這工作完全直到用戶輸入新的關鍵字到一個文本框重新搜索。一旦用戶進行第二次搜索,就會出現許多錯誤。任何人有任何想法如何使這項工作?我是否應該展示更多代碼來解釋我的問題?也許我只是不理解JavaScript的這個片段?任何幫助或建議將不勝感激。
感謝您的迴應!我結束了不同的路線,因爲jqPagination插件沒有所需的功能來動態更改maxpagenumber。我只是決定,爲了我創建的Web應用程序的目的,我可以在沒有最多頁數的情況下離開。我應該將您的答案標記爲已接受嗎?再次感謝! – 2012-08-03 02:53:18
如果你願意,或者要求刪除問題(我想你可以自己刪除它),如果你認爲它永遠不會再幫助任何人。然而,我有一種感覺,它會幫助未來的人們,因爲它在這裏幫助你。 – jcolebrand 2012-08-03 15:34:53
好的,再次感謝。 – 2012-08-05 01:14:51