带有地图区域的AJAX动态页面内容

时间:2014-09-02 02:06:07

标签: javascript php ajax jqvmap

我正在使用JQVMaps在WordPress网站上创建世界地图。我需要根据用户点击的区域生成页面内容。以下是我迄今为止的概念证明:

    <div id="post"></div>
    <script>
        jQuery('#vmap').vectorMap({
            map: 'world_en',
            backgroundColor: '#fff',
            borderColor: '#bbb',
            borderOpacity: 1,
            borderWidth: .2,
            color: '#bbb',
            onRegionOver : function (element, code, region)
            {
                highlightRegionOfCountry(code);
            },
            onRegionOut : function (element, code, region)
            {
                unhighlightRegionOfCountry(code);
            },
            onRegionClick: function(element, code, region)
            {
                highlightRegionOfCountry(code);
                $.ajax('/get_chart_data.php', {
                    dataType: 'json',
                    success: function(response) {
                        var jspost = "<?php echo $post; ?>";
                        var el = document.getElementById("post");
                        el.html = jspost;
                    }
                });
            }   
        });
   </script>

以下是我在get_chart_data.php中的内容:

<?php

    // Switch based on region
    switch($_REQUEST['region']) {
      case China:
        $post = 'You clicked China';
        break;
      case Canada:
        $post = 'You clicked Canada';
        break;
      case Brazil:
        $post = 'You clicked Brazil';
        break;
    }

    echo json_encode($post);
?>

我没有得到地图的回复。我对AJAX很新,所以我很感激能得到的任何和所有帮助。我可能会错过一个非常关键的部分。

1 个答案:

答案 0 :(得分:1)

当你说&#34;地图没有回复时,&#34;你的意思是你的highlightRegionOfCountry和unhighlightRegionOfCountry正在工作,而且你的ajax调用不起作用了吗?你想要的是你的php脚本中$ post变量的值最终会在你的元素中结束吗?

如果是这样的话,我认为你在jQuery ajax调用中如何接收数据有点混乱。你不会通过将JavaScript代码放在javascript代码中来接收它,你会在传递给你的成功回调函数的数据中,在变量&#34; response&#34;中收到它。就像你拥有它一样。此外,您必须将单击的代码作为数据传递给ajax调用。此外,你不能只使用简单的&#34; html&#34;在dom元素上的属性,所以我会改变它。所以你的ajax调用应该改为:

$.ajax({
    url: "/get_chart_data.php",
    data: {
        region: region
    },
    success: function(response) {
        $("#post").html(response);
    }
});

在php中引用字符串也是一种更好的做法,所以不要使用例如案例中国:,用例&#39;中国&#39;等等。