多个Ajax调用有时会失败

多个Ajax调用有时会失败

问题描述:

I have a PHP script which queries a database and returns a table, depending on the input, e.g.results.php?f=1.

I am trying to call it multiple times from 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();
}

Call later

    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');

The PHP code connects to a SQLite3 database. The problem with the above is that sometimes it works, but sometimes one of the queries fails to be prepared by SQLite3::prepare().

What could be wrong? A sqlite race condition? A javascript issue? When results.php is called just once, the query always succeeds.

Thanks.

Use xhttp instead of 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');