多个Ajax调用有时会失败

时间:2016-08-23 09:43:02

标签: javascript php ajax sqlite

我有一个PHP脚本查询数据库并返回一个表,具体取决于输入,例如,结果.php?f = 1.

我试图从JavaScript中多次调用它:

function go(n,divid) {
 document.getElementById(divid).innerHTML = "<img src=\"load.gif\">";
 var xmlhttp = new XMLHttpRequest();
 xmlhttp.onreadystatechange = function () {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        document.getElementById(divid).innerHTML = xmlhttp.responseText;
    }
 }
 xmlhttp.open("GET", n, true);
 xmlhttp.send();
}

稍后致电

    go('results.php?print=1&nh=1','d1');
    go('results.php?print=2&nh=1','d2');
    go('results.php?print=3&nh=1','d3');
    go('results.php?print=4&nh=1','d4');

PHP代码连接到SQLite3数据库。上面的问题是有时它可以工作,但有时其中一个查询无法由SQLite3 :: prepare()编写。

可能有什么不对?一个sqlite竞争条件?一个javascript问题? 当只调用一次results.php时,查询总是成功。

感谢。

1 个答案:

答案 0 :(得分:1)

使用xhttp而不是xmlhttp。

function go(n,divid) {
 var xhttp = new XMLHttpRequest();
 document.getElementById(divid).innerHTML = "<img src=\"load.gif\">";
 xhttp.onreadystatechange = function () {
    if (xhttp.readyState == 4 && xhttp.status == 200) {
        document.getElementById(divid).innerHTML = xhttp.responseText;
    }
 }
 xhttp.open("GET", n, true);
 xhttp.send();
}
 go('results.php?print=1&nh=1','d1');