2011-11-24 29 views
0

我的jQuery AJAX作爲如何通過jQuery的AJAX更新的值

$(document).ready(function(){ 
$('#next').click(function(event){ 
    $.ajax({ 
    url: "load.php?start="+$('#lastid').text(), 
    success: function(html){ 
    $("#results").append(html); 
    $("#lastid").empty().load('html #start'); 
    } 
    }); 
}); 
}); 

加載頁面的內容在當前文檔,我有<div id="lastid"></div>和外部php文件<div id="start"></div>

的價值id =「start」從數據庫更新,它將被轉移到id =「lastid」。但是,此代碼僅適用於第一次點擊。對於默認的<div id="lastid">1</div>,當點擊按鈕(id =「more」)時,它將讀取load.php?start = 1並將當前文檔更新爲<div id="lastid">11</div>(它是可見的)。但第二次點擊將不會加載load.php?start=11

似乎$('lastid')以及讀取<div id="lastid"></div>的默認值,而不是在它已經被$("#lastid").empty().load('html #start')

更新我怎麼能修改此代碼,以用於後續的點擊工作嗎?

回答

0

伴侶, 我從你看到的代碼是,你一旦加載頁面就附加一個事件。這會創建一個靜態調用靜態值,在您繼續時不會更新。 我的建議是使用功能,將如下動態養活一個ID您的Ajax調用:

$(document).ready(function(){ 
$(document).on("click", '#next', function(event){ 
    $.ajax({ 
    url: buildurl(), 
    success: function(html){ 
    $("#results").append(html); 
    $("#lastid").empty().load('html #start'); 
    } 
    }); 
}); 
}); 

function buildurl() 
{ 
    return "load.php?start="+ $('#lastid').text(); 
} 

這將迫使你的事件總是調用這個函數和函數來獲取從lastid一個新的價值。 Regards

1

嘗試.live()函數來代替。點擊()

0

你必須改變你的成功的功能,因爲你有多個#lastid點擊兩次時。

嘗試類似:

success: function(html){ 
    $("#lastid").removeAttr("id"); // remove's the id from #lastid 
    $("#results").append(html);  // appends the new one 
    $("#lastid").empty().load('html #start'); 
} 
3

哇,什麼亂七八糟的!讓我們來清理一下:)

你需要擺脫id,因爲id必須是唯一的,如果你使用id lastId加載另一個div到你的站點,jQuery將不知道要獲取哪個id。如果你有很多div,每個都包含id,你可以通過使用('div:last')來讀取最後一個id。

所以你的Ajax是這樣的:

$(document).ready(function(){ 
$('#next').click(function(event){ 
    $.ajax({ 
    url: "load.php", 
    data: "start="+$('div:last').text() 
    success: function(html){ 
    $("#results").append(html); 
    } 
    }); 
}); 
}); 

我也不知道你在成功的最後一行做什麼,負載應使用從服務器與AJAX加載數據,你使用$ .ajax()來做什麼?另外,load()至少需要一個url作爲參數,請參見here

+0

對於我做的混亂+1;)我使用load()來解析ajax捕獲的數據以獲取start(它在每次運行時在load.php中更新)的值。在你的代碼中,'last'的值是恆定的,因爲它來自load.php – Googlebot