0

对我的 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>
4

2 回答 2

1

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

将每个实例包装在一个函数中,这样您就可以处理局部范围的变量而不是全局变量。

于 2013-10-15T14:42:57.133 回答
1

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

 var xmlhttp = new XMLHttpRequest(); 

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

于 2013-10-15T14:32:26.680 回答