通过AJAX接收和显示html数据

时间:2014-06-11 14:07:55

标签: php jquery mysql ajax google-maps

**更新**

我有AJAX工作(见下文),但现在模态叠加层在打开后不会关闭。有什么想法? (请参阅叠加JS原始帖子上的jsfiddle)

  map.addMarker({
  lat: 34.5333,
  lng: 69.1333,
  title: 'Afghanistan',
  click: function(){
    if ($('#modal-shade').length == 0)
    var a = $(this).attr('title');
    var jqhxr = $.ajax( 'inc/parser.php?country='+a )
        .done(function(data) {  
            $('.modal').html(data);
            openOverlay('.modal');
            return false;
         });
      }
  });

**原始发布**

我正在使用gmaps.js(http://hpneo.github.io/gmaps/)来显示包含不同国家/地区的多个标记的地图。我试图设置它,以便当用户点击特定标记时,它会点击PHP脚本(即script.php?country = USA),查询数据库以填充一块具有特定国家/地区的html数据,并通过AJAX返回要以模态(http://jsfiddle.net/istvanv/uQj7t/28/)显示的国家/地区数据。

我根本不是一个javascript人,我不确定如何动态地完成这项工作,而不需要在页面上单独设置每个模态的代码,从而使页面大小变大。这就是我正在做的事情:

map.addmarker({
    lat: 0.0000,
    lng: 0.0000,
    title: USA,
    click: function(e){
    $.ajax({
        url: 'inc/parser.php?country=USA',
        type: 'GET',
        data: 'USA',
        });
    openOverlay('.USA').html(data);
    preventDefault();
    }
});

// more map markers here

parser.php只是一个php / mysql查询,它根据传递的变量抓取国家数据并填写模板 - 当我点击带有国家/地区变量的页面时,这部分工作正常:

if(isset($_GET['country']) && !empty($_GET['country'])) {
    $country = $_GET['country'];

//connection stuff here

$results = $mysqli->query("SELECT * FROM table WHERE country = '". $country ."' LIMIT 1");

while($row = $results->fetch_object()) {
    echo 'Population: '. $row->population .' people
          etc
          etc
          etc';
    }
}
$mysqli->close();

我知道它可能很可怕而且可笑但是我一直在抨击它,现在这是一个彻头彻尾的麻烦。有人可以帮我拿这个AJAX吗?

1 个答案:

答案 0 :(得分:0)

你能分开添加标记ajax请求吗?当您单击标记时,获取其标题属性并将其传递给您ajax url。 e。

map.addmarker({
    lat: 0.0000,
    lng: 0.0000,
    title: USA,

});// for each marker

$(".YourMarkersClass")click( function(){
        var a= $(this).attr("title");
        $.ajax({
            url: 'inc/parser.php?country='+a,
            type: 'GET',
            data: a,
            });
        openOverlay('.'+a).html(data);
        preventDefault();
        });