我试图在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请求时有效。但是,如果我制作两个或更多,那么我会得到混合的结果。有时所有请求都会起作用,有时候没有,或者只有一个。发生的错误是连接尚未关闭。
答案 0 :(得分:0)
使用此代码的主要问题是它使用相同的全局变量(例如client
),这些变量只会因为多个请求而失败EM>重挫
(由于请求的异步性质,处理程序调用的顺序未定义的问题仅仅是 secondary ,因为缺乏在给定中创建/使用XHR对象的重新性代码 - 当访问client
变量时,处理程序无法保证正确的XHR对象!)
闭包和对象避免了这个问题,但是..只使用jQuery(或者你喜欢的任何提供一个很好的XHR接口的库,最好是Promises)。
既然你“不会反对jquery”,那么use it。注意仅使用它们提供的返回数据在回调(或承诺处理程序)中工作 - 这是因为请求是异步的。