循环内问题的JavaScript

循环内问题的JavaScript,javascript,Javascript,我需要从服务器获得4个请求,我已经以这种方式存储了所有这4个URL。有关信息,请参阅原始url() 这是调用my getTime.php并检索结果 为此,我为in-loop创建了这个,但它只打印了4次的一次intead?我怎样才能发出呼叫4请求 for(zone in nationZone ){ if (window.XMLHttpRequest){ zone=new XMLHttpRequest(); }else{ zone=new Active

我需要从服务器获得4个请求,我已经以这种方式存储了所有这4个URL。有关信息,请参阅原始url()

这是调用my getTime.php并检索结果

为此,我为in-loop创建了这个,但它只打印了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();
}

我不介意使用包含附加第三方库的解决方案,因为循环变量和XHR使用相同的名称。不要那样做


编辑:另外,这个问题有jQuery标记,但您没有使用jQuery。不要做自己的XHR工作,而是通过$.ajax或$.get使用jQuery的ajax实现。也可以考虑使用JSONP,如果远程服务器支持它。

如果您使用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);
    });
});

if/else块中的
区域
变量正在覆盖for循环中的
区域
。因此,在循环完成第一次迭代时,只有一个
区域
对象要处理

在函数中使用其他变量名。该行:

`zone.open("GET",nationZone[zone],true);`
应该说

`newZoneVariable.open("GET", nationZone[zone], true);`

其中newZoneVariable是循环体中使用的var。

可能重复的虽然这是真的,但这不是唯一的问题,更改名称也不能解决问题。
`newZoneVariable.open("GET", nationZone[zone], true);`