多个 xmlhttp 请求会导致除最后一个实例之外的所有实例的 readystate 都达不到 4

Multiple xmlhttp requests causes readystate not to reach 4 for all but the last instance.

本文关键字:实例 xmlhttp readystate 达不到 多个 最后一个 请求      更新时间:2023-09-26

对我的xmlhttp无法完成的问题感到困惑。仅当我有多个电话时,才会出现问题。奇怪的是,只有最后一个完成。我觉得好像第一个超时了什么的。在观察窗口中的代码时,就绪状态更改函数会触发几次,但值始终为 1,最终它会跳出并执行下一次调用。有没有办法解决这个问题?马贝加了延迟?任何建议都非常受欢迎。

 <script>    
<!--var plant_select = document.createElement("select");  -->
             var datafile = '';
             var xmlhttp = new XMLHttpRequest();
             xmlhttp.open("GET","http://localhost:8080/res/plants.csv",true);
             xmlhttp.send();
             xmlhttp.onreadystatechange = function()
             {
                if(xmlhttp.status==200 && xmlhttp.readyState==4)
                {
                    processCSV(xmlhttp.responseText, document.getElementById("plant_select"),"Select Plant");
                }
             }
        </script>
        </select>
    </div>
    <div class="menu_element" id="plantType_div">
        <select  class="Menu" id="plantType_select">
        <script>
             <!--var plant_select = document.createElement("select");  -->
             var datafile = '';
             var xmlhttp = new XMLHttpRequest();
             xmlhttp.open("GET","http://localhost:8080/res/planttypes.csv",true);
             xmlhttp.send();
             xmlhttp.onreadystatechange = function()
             {
                if(xmlhttp.status==200 && xmlhttp.readyState==4)
                {
                    processCSV(xmlhttp.responseText, document.getElementById("plantType_select"),"Select Plant Type");
                }
             }
        </script>

您为每个请求使用相同的全局变量:var xmlhttp 。然后,每个后续实例尝试对同一变量进行操作。因此,您只会得到最后一个,因为这是在任何响应返回之前要写入的变量的最后一个值。

将每个实例包装在一个函数中,以便处理本地范围的变量而不是全局变量。

您每次都使用相同的对象:

 var xmlhttp = new XMLHttpRequest(); 

尝试为每个请求指定不同的名称。