0

我有一个列表显示数据库中的一些信息,当您向数据库添加项目时,我希望更新列表。

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 还是很陌生,所以这可能是一个简单的错误,但在过去的几个小时里,它一直让我发疯。

4

2 回答 2

1

您正在调用 post 并且 get 是在 post 完成工作之前调用的,即将数据放入数据库中。You need to call the getList in success of post以便您从数据库中获取数据。在此处阅读有关帖子的更多信息。

 $.post('tool/addListItem.php', $("#addItem").serialize()).success(function() {           
          getList(listID); 
 });
于 2012-11-12T06:53:15.383 回答
0

试试这个

xmlhttp.open("GET", "tool/getlist.php?q=" + id,true);
于 2012-11-12T06:52:13.310 回答