多个xmlhttp请求导致readystate除最后一个实例外不会达到4。

时间:2013-10-15 14:29:39

标签: javascript html xmlhttprequest

我的xmlhttp问题未能完成而感到困惑。只有在我有多个电话时才会出现此问题。奇怪的是,只有最后一个完成。我觉得好像是第一次超时或者什么的。在观察窗口中的代码时,就绪状态更改功能会触发几次,但值始终为1,最终会跳出并执行下一次调用。有没有办法解决这个问题? MAybe加了延迟?任何建议都很有意义。

 <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>

2 个答案:

答案 0 :(得分:1)

每次都使用相同的对象:

 var xmlhttp = new XMLHttpRequest(); 

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

答案 1 :(得分:1)

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

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