1

我有这个代码:

 for(var i in dataJson){    
            direcc=dataJson[i].dir  ; 
            id=dataJson[i].id   ;

    $.ajax({
            url: 'http://dev.virtualearth.net/REST/v1/Locations?query=' + direcc + '&key=mykey&jsonp=?',
           dataType: 'json',
       async: false,
           success: function(result) {

             loc = result.resourceSets[0].resources[0].point.coordinates;
             direcc=result.resourceSets[0].resources[0].address.formattedAddress;
             lat=loc[0];
             long=loc[1];


          $("#bing").append('latitudeBing:' + lat + '<p>longitudeBing:' + long+'$$$$$$'+id);
 }
   });

问题是我想写纬度+经度+ id,但是当它写时,id是所有这些的最后一个(id从1到200,所有坐标出现200)。

原来的函数是 $getjson,我改变了它以使 $ajax 调用 async:false,但这并不能解决我的问题。

有人可以帮我吗?非常感谢你!!

4

1 回答 1

1

现在用正确的答案编辑。

小提琴来展示这个概念

for(var i in dataJson){    
    var direcc = dataJson[i].dir; 
    var id = dataJson[i].id;
    makeAjaxCall(direcc, id);
}

function makeAjaxCall(direcc, id) {
    $.ajax({
        url: 'http://dev.virtualearth.net/REST/v1/Locations?query=' + direcc + '&key=mykey&jsonp=?',
        dataType: 'json',
        async: false,
        success: function(result) {
            loc = result.resourceSets[0].resources[0].point.coordinates;
            direcc=result.resourceSets[0].resources[0].address.formattedAddress;
            lat=loc[0];
            long=loc[1];
            $("#bing").append('latitudeBing:' + lat + '<p>longitudeBing:' + long+'$$$$$$'+id);
        }
    });
}

这将“当前”置于函数direccid范围内makeAjaxCall。我添加的小提琴只是展示了如何。

此外,不需要保留async: false,周围,所以如果你愿意,可以随意删除它。

于 2012-10-17T18:43:14.363 回答