我需要从服务器获得4个请求,我已经以这种方式存储了所有这4个URL。有关信息,这是原始网址(http://www.earthtools.org/timezone/40.714352/-74.0059731);
var nationZone = {
getNewYorkLocalTime : 'getTime.php?lat=40.7143528&lan=-74.0059731',
getLondonLocalTime : 'getTime.php?lat=51.5001524&lan=-0.1262362',
getChennaiLocalTime : 'getTime.php?lat=13.060422&lan=80.249583',
getBangaloreLocalTime:'getTime.php?lat=12.9715987&lan=77.5945627'
}
这是调用我的getTime.php并检索结果。
为此,我为in循环创建了这个,但这只打印了4次intead的一次?我该怎么做才能拨打4个请求?
for(zone in nationZone ){
if (window.XMLHttpRequest){
zone=new XMLHttpRequest();
}else{
zone=new ActiveXObject("Microsoft.XMLHTTP");
}
zone.onreadystatechange=function() {
if(zone.readyState==4 && zone.status==200){
alert(zone.responseText);
}
}
zone.open("GET",nationZone[zone],true);
zone.send();
}
我不介意使用涉及其他第三方库的解决方案
答案 0 :(得分:1)
您对循环变量和XHR使用相同的名称。不要那样做。
编辑:此外,这个问题有jQuery标签,但你没有使用jQuery。不要使用自己的XHR,而是通过$ .ajax或$ .get使用jQuery的ajax实现。如果远程服务器支持JSONP,也请考虑使用JSONP。
答案 1 :(得分:1)
如果您使用jQuery,可以试试这个,但我怀疑它是否可行,因为不允许跨域ajax。
var nationZone = {
getNewYorkLocalTime : 'getTime.php?lat=40.7143528&lan=-74.0059731',
getLondonLocalTime : 'getTime.php?lat=51.5001524&lan=-0.1262362',
getChennaiLocalTime : 'getTime.php?lat=13.060422&lan=80.249583',
getBangaloreLocalTime:'getTime.php?lat=12.9715987&lan=77.5945627'
}
$.each(nationZone , function(key, value){
$.get(value, function(response){
alert(response);
});
});
答案 2 :(得分:0)
zone
变量将覆盖for循环中的zone
。因此,在完成第一次迭代时,你的循环只有一个zone
对象可以处理。
在函数内使用其他一些var名称。这一行:
`zone.open("GET",nationZone[zone],true);`
应该说
`newZoneVariable.open("GET", nationZone[zone], true);`
其中newZoneVariable是循环体内使用的var。