2011-11-22 19 views
0

予加載數據的jQuery AJAX設定爲如何在JQuery中記住下一個AJAX加載的變量?

$(function(){ 
$('#next').submit(function(e){ 
e.preventDefault(); 
var form = $(this); 
var page = form.attr("action") 
    $.ajax({ 
    type: 'POST', 
    url: page, 
    success: function(html){ 
    $("#results").append(html); 
    } 
    }); 
}); 
}); 

形式是用行動= 「load.php?頁= 2」 的單個按鈕。

當按下表格的提交按鈕時,它會從load.php?page=2加載數據。如何在下次點擊時記住此操作以從load.php?page=3加載數據?並閱讀後續頁面?

其實我想介紹一個新的變量,頁碼會隨着每次點擊而增加。

+1

你還記得什麼? 2號和3號?你通過$ _GET ['page']得到它們。如果你知道如何使用下面的數字來創建下一個請求,只需創建一個'並增加它的值。否則,請解釋您想要記住的內容。 –

回答

1

你可以只設置一個javascript VAR來表示頁,然後增加它在提交...

var page = 1; 
$(function(){ 
$('#next').submit(function(e){ 
e.preventDefault(); 

var form = $(this); 
    $.ajax({ 
    type: 'POST', 
    url: page, 
    success: function(html){ 
     $("#results").append(html); 
     page += 1; 
    } 
    }); 
}); 
}); 

我不知道您的原始網頁中的var它有什麼,但很明顯,你會調整這個迴應以滿足您的需求。顯然,你的url參數不會是單個數字,所以根據需要更新該部分。

+1

您可能想要調用變量'page_number'而不是'page',它將作爲'data:{page:page_number}'傳遞,而不是在'url'中傳遞。你可能想把整個塊放入一個閉包中,這樣它就不會泄漏'page_number'變量。 (雖然如果這是你計劃在上面的代碼塊所有的代碼,那麼這不是一個問題。) –

3

我將使用RegEx從action屬性末尾切下數字,並將success處理器中的action替換爲遞增的頁碼。

我也將線b.attr("action")更改爲form.attr("action"),因爲我認爲這是您的版本中的拼寫錯誤。如果不能留在該行:)的原始版本

$(function(){ 
    $("#next").submit(function(e){ 
     e.preventDefault(); 

     var form = $(this), 
      page = form.attr("action"), 
      page_nr = (/\d+$/.exec(page) || ["2"])[0]; 

     $.ajax({ 
      type: 'POST', 
      url: page, 
      success: function(html){ 
       form.attr("action", page.substring(0, (page.length - page_nr.length)) + (+page_nr + 1)); 
       $("#results").append(html); 
      } 
     }); 
    }); 
}); 

例子:http://jsfiddle.net/WfrU7/

+0

謝謝約翰,是的,這是一個錯字:) – Googlebot

+0

(+1)這是一個非常聰明的方式!我自己儘可能避免額外的編碼(處理壓力)。 –

1

來處理這些「需要保持的歷史」,不管你信不信,一個DOM元素的最好方法。我們與編程,變量和文字緊密相連,我們只是忘記了事情的簡單方面。顯然,簡單是沒有人想到的。

所以,「簡單」的解決方案是在頁面的腳本加載,保存您的查詢參數(頁= 2 ... 2)上

<span id='curPageNumber' style='display:none; '> 
在加載頁面

。在下一次調用中,您所需要做的就是例如onSubmit ='functionSubmit(); '和

function functionSubmit() { 
    var action="load.php?page="+$('#curPageNumber').text()*1+1; 
    $('#formID').attr('action',action); 
    $('#formID').submit(); 
} 
相關問題