$ .getJSON,google.maps.infowindow和内容字符串

时间:2016-01-07 22:39:08

标签: javascript json google-maps edx mashup

该代码应该添加一个click事件,其中infowindow在一个标记上打开,其中包含来自PHP页面的数据,并且"工作"除了第一个infowindow打开空白(只是在h1中说新闻)之后,我打开的每个其他信息都包含来自最后一个标记的东西。谁能告诉我如何解决它?

//broken part
marker.addListener('click', function() {
    $.getJSON('articles.php/GET?geo='+ marker.title)
    .done(function(data, textStatus, jqXHR) {   
        $.each(data, function() {
            contentString=contentString + '<li><a href=' + data[counter].link + '>' +data[counter].title + '</a></li>' ;
            counter++;
        });         
    });

    contentString=contentString + '</ul></div>' ;
    var infowindow= new google.maps.InfoWindow({
        content: contentString  
    });

    infowindow.open(map, marker);
    counter=0 ;
    contentString='<div align="center"><h1>news</h1><br></div><div align="left" colour="blue"><ul>';
});

1 个答案:

答案 0 :(得分:0)

$ .getJSON是异步的,你需要使用其回调函数内的数据,当它/何时可用(在.done函数内)。

marker.addListener('click', function() {
    $.getJSON('articles.php/GET?geo='+ marker.title)
    .done(function(data, textStatus, jqXHR) {   
        $.each(data, function() {
            contentString=contentString + '<li><a href=' + data[counter].link + '>' +data[counter].title + '</a></li>' ;
            counter++;
        });         
        contentString=contentString + '</ul></div>' ;
        var infowindow= new google.maps.InfoWindow({
            content: contentString  
        });

        infowindow.open(map, marker);
        counter=0 ;
        contentString='<div align="center"><h1>news</h1><br></div><div align="left" colour="blue"><ul>';

    });
});