Javascript 多个回调getJSON jquery出现问题

Javascript 多个回调getJSON jquery出现问题,javascript,ajax,jquery,mapping,getjson,Javascript,Ajax,Jquery,Mapping,Getjson,我需要创建一些标记弹出窗口,在地图上显示来自不同ajax请求的信息。要进行第二次调用,我使用从第一次调用中获得的用户ID。第二次呼叫的信息显示良好,但所有弹出窗口显示的都是第一次呼叫的最后一个项目的相同名称,为什么会发生这种情况,有人能帮我吗?非常感谢 $.getJSON('url', function (data) { // first call for (var i = 0; i < data.length; i++) { var n

我需要创建一些标记弹出窗口,在地图上显示来自不同ajax请求的信息。要进行第二次调用,我使用从第一次调用中获得的用户ID。第二次呼叫的信息显示良好,但所有弹出窗口显示的都是第一次呼叫的最后一个项目的相同名称,为什么会发生这种情况,有人能帮我吗?非常感谢

$.getJSON('url', function (data) { // first call
      for (var i = 0; i < data.length; i++) {            
        var name= data[i].name;
        var location= data[i].location;
        var userID = data[i].userID;
        var myIcon= data[i].icon;   
        var marker = new L.Marker(location, {title: name, icon: myIcon});// create the marker           
        $.getJSON('https://api.site.com/data/'+userID+'',(function(marker){ // second call using userID
          return function(data2) {
          var info1 = data2.response.tips.items[0].text;
          var info2 = data2.response.tips.items[1].text;
          marker.bindPopup("<div class='popup'>" + name +"</br>"+ info1 +"</br>"+ info2 + "</div>", {maxWidth: '600'}) // create the popup and add it to the marker                     
                }
         })(marker)
        );
      shops.addLayer(marker); // add marker to map layer
      }
$.getJSON('url',函数(数据){//第一次调用
对于(var i=0;i“+info1+”
“+info2+”,{maxWidth:'600'})//创建弹出窗口并将其添加到标记中 } })(标记) ); shops.addLayer(marker);//将marker添加到地图层 }
您需要在闭包中捕获
名称
,就像对
标记
一样

    $("#loadingDiv").show();
    $.getJSON('https://api.site.com/data/'+userID+'',(function(marker, name){ // second call using userID
      return function(data2) {
      var info1 = data2.response.tips.items[0].text;
      var info2 = data2.response.tips.items[1].text;
      marker.bindPopup("<div class='popup'>" + name +"</br>"+ info1 +"</br>"+ info2 + "</div>", {maxWidth: '600'}) // create the popup and add it to the marker
      $("#loadingDiv").hide();                   
            }
     })(marker, name)

<div id="#loadingDiv" style="display: none">Loading...</div>
$(“#加载div”).show();
$.getJSON('https://api.site.com/data/“+userID+”,(函数(标记,名称){//使用userID的第二次调用
返回函数(数据2){
var info1=data2.response.tips.items[0]。文本;
var info2=data2.response.tips.items[1].text;
marker.bindpoop(“+name+”
“+info1+”
“+info2+”,{maxWidth:'600'})//创建弹出窗口并将其添加到标记中 $(“#加载div”).hide(); } })(标记、名称) 加载。。。
你要么从
标记中获取
名称
,要么将
名称
添加到闭包中的变量中。对不起@Barmar,但是,你能给我解释一下吗?谢谢!!我想你会理解的,因为你已经为
标记
做了这件事。我已经发布了一个答案。它非常有效!非常感谢你的帮助elp@Barmar,这是学校的一个项目。请允许我问你,我必须将另外两个电话的信息添加到弹出窗口中,我必须将它们放在哪里?我的老师帮助我,所以我不太理解代码,非常感谢你的帮助!在看不到你需要做的所有事情的情况下很难确定。我建议你研究这是如何工作的,然后再试一次要自己解决这个问题,这就是你学习和理解的方式。