dqp4933 2016-08-23 09:43
浏览 47

多个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.

  • 写回答

1条回答 默认 最新

  • dongluo9156 2016-08-23 10:48
    关注

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

报告相同问题?

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助