2013-10-29 61 views
0

我試圖在用戶進入頁面底部時加載其他文章。我已經實現了所有的功能,但不能在JavaScript中增加我多次使用的全局變量。我不會感到驚訝,如果它不工作,但這種方式...
無論如何,我已經強制async:false,它仍然沒有按預期工作 - 啓動變量獲得增加到1與第一呼叫,然後在每次下一次呼叫後它總是1。無法從jQuery中的Ajax調用中更新全局變量不止一次

我在做什麼錯,我該如何解決這個問題?

start = 0; 

function LoadNextArticles() 
{ 
    $.ajax({ 
     type: "post", 
     url: "ajax/articles_load.php", 
     data: "start=" + start, 
     async: false, 
     success: function(msg) { 
      c = $("#content").html(); 
      $("#content").html(c + msg); 

      start += 1;    
     } 
    }); 
} 

setInterval(function() {  
    if (($(document).height() - $(window).height()) - $(window).scrollTop() < 10) 
    { 
     LoadNextArticles(); 
    } 
}, 1000); 
+0

這只是一般都是一個壞主意,檢查滾動位置的每一秒,而不是當用戶實際滾動,以同步的方式使用** **異步JavaScript和XML等等。 – adeneo

+0

順便說一句,嘗試像這樣 - > http://jsfiddle.net/3wE3W/ – adeneo

+0

AJAX響應:它是否包含腳本標記,它將'start'設置回0? – Boldewyn

回答

0
  1. document.start + = 1

  2. 嘗試 '語境' 變量添加到您的Ajax調用

    $阿賈克斯({ 類型: 「POST」, 方面:這個, ...

或者可能的上下文:記錄

+0

較低範圍內的較高範圍的變量可用,窗口或文檔沒有理由作爲命名空間或傳遞上下文嗎? – adeneo

+0

在這種情況下,它不起作用。 – buzdykg

0

我看不出有什麼問題,你的代碼,但嘗試window.start而不是start 此外,async:false是壞主意,直到你的請求完成,它會暫停JavaScript執行。

更多關於全局變量: http://snook.ca/archives/javascript/global_variable