2012-11-12 96 views
0

我有一個列表顯示數據庫中的一些信息,並且當您向數據庫添加項目時,我希望列表更新。ajax每隔一次只更新

function getList(id) { 
    if (window.XMLHttpRequest) { 
     xmlhttp = new XMLHttpRequest(); 
    } 
    xmlhttp.onreadystatechange = function() { 
     if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
      document.getElementById("list").innerHTML = xmlhttp.responseText; 
     } 
    } 
    xmlhttp.open("GET", "tool/getlist.php?q=" + id); 
    xmlhttp.send(); 
} 

function addItem() { 

    $.post('tool/addListItem.php', $("#addItem").serialize()); 
    var listID = $("#addItem").serializeArray()[0].value; 
    getList(listID); 
}​ 

的信息添加細,問題是,當我打電話從的addItem()中的GetList函數,什麼都不會發生,如果我再次調用它,它更新了第一次,但隨後的第三次沒有任何反應和第四次更新。

我在更新之前用警報運行了一些調試。

var listID = $("#addItem").serializeArray()[0].value; 
alert(listID); 
getList(listID); 

如果我這樣做,它點擊確定後更新正常。

我對javascript和ajax總體來說還是比較新的,所以這可能是一個簡單的錯誤,但它在過去的幾個小時裏一直讓我發狂。

回答

1

要調用post和get是呼叫後已經做之前的工作,即在數據庫將數據。 You need to call the getList in success of post,以便您從數據庫中獲取數據。閱讀更多關於後here

$.post('tool/addListItem.php', $("#addItem").serialize()).success(function() {   
      getList(listID); 
}); 
+0

非常感謝你,這個伎倆。所以爲了確保我理解了這個問題,基本上.success()會等待我所稱做的任何函數? –

+0

是,請求成功時執行的回調函數。關於帖子的更多信息http://api.jquery.com/jQuery.post/ – Adil

0

嘗試用這種

xmlhttp.open("GET", "tool/getlist.php?q=" + id,true);