使用javascript发出多个HTTP GET请求

时间:2013-11-13 23:18:20

标签: javascript ajax http xmlhttprequest

我试图在js中发出多个http get请求。但我是一个总菜鸟。我也不会反对jQuery。这个想法是我打电话给我的服务器,所以我可以填充一个js图表。

var client;
function handler() { 
    if(client.readyState == 4 && client.status == 200) { 
        // make a chart
    }
} 

window.onload = function() { 
    client = new XMLHttpRequest(); 
    client.onreadystatechanged = handler; 
    client.open("GET", "http://someurl/stuff"); 
    client.send();
}

所以上面是web请求的基本思想。似乎处理程序充当回调或事件。这在创建一个get请求时有效。但是,如果我制作两个或更多,那么我会得到混合的结果。有时所有请求都会起作用,有时候没有,或者只有一个。发生的错误是连接尚未关闭。

1 个答案:

答案 0 :(得分:0)

使用此代码的主要问题是它使用相同的全局变量(例如client),这些变量只会因为多个请求而失败EM>重挫

(由于请求的异步性质,处理程序调用的顺序未定义的问题仅仅是 secondary ,因为缺乏在给定中创建/使用XHR对象的重新性代码 - 当访问client变量时,处理程序无法保证正确的XHR对象!)

闭包和对象避免了这个问题,但是..只使用jQuery(或者你喜欢的任何提供一个很好的XHR接口的库,最好是Promises)。

既然你“不会反对jquery”,那么use it。注意使用它们提供的返回数据在回调(或承诺处理程序)中工作 - 这是因为请求是异步的。