javascript - 谷歌图表和 jquery POST

标签 javascript php jquery google-visualization

我正在尝试使用从 jquery POST 方法返回的数据填充 Google 地理图表,但它没有创建图表。我的代码如下所示:

HTML:

<div id="geomap" style="width: 500px; height: 500px; position: relative;"></div>

JavaScript:

<script type='text/javascript' src='https://www.google.com/jsapi'></script>
<script type="text/javascript">
    google.load('visualization', '1', {'packages': ['geochart']});  
    $.post('functions/functions.php', {f: 'getreferralstats'}, function(data) {     
        if (data.success) {
            console.log(data.countries);
            google.setOnLoadCallback(drawRegionsMap);
            function drawRegionsMap() {
                var chartData = google.visualization.arrayToDataTable([
                    ['Country', 'Hits'],
                    data.countries
                ]); 
                var options = {};   
                var chart = new google.visualization.GeoChart(document.getElementById('geomap'));
                chart.draw(chartData, options);
            };
        }           
    }, "json"); 
</script>

我的国家/地区 JSON 对象的输出如下所示:

Object {MX: "164305", AR: "120045", CO: "56741", CL: "48449", VE: "26777"…}

知道我在这里遗漏了什么。图表永远不会呈现。

最佳答案

您可能遇到了时间问题。如果您的 AJAX 调用在 google.load 调用完成后返回,则 google.setOnLoadCallback 不执行任何操作。简单的解决方案是在加载 Visualization API 后启动 AJAX 调用:

google.load('visualization', '1', {'packages': ['geochart'], callback: drawRegionsMap});
function drawRegionsMap () {
    $.post('functions/functions.php', {f: 'getreferralstats'}, function(data) {
        if (data.success) {
            var chartData = google.visualization.arrayToDataTable([
                ['Country', 'Hits'],
                data.countries
            ]);

            var options = {};

            var chart = new google.visualization.GeoChart(document.getElementById('geomap'));
            chart.draw(chartData, options);
        }
    }, "json"); 
}

我怀疑您仍然会遇到问题,除非 data.countries 是一个包含两个元素的数组(一个国家和一个值,例如 ['Brazil', 5]) .如果 data.countries 是一个数组数组,那么你想改用它:

var chartData = google.visualization.arrayToDataTable([['Country', 'Hits']].concat(data.countries));

关于javascript - 谷歌图表和 jquery POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21291538/

相关文章:

javascript - 加快客户端的数据表加载时间

php - 在 php while 循环中使用 jQuery 函数

javascript - 如果 div 没有内容隐藏其他 div

javascript - jQuery Sticky Waypoints 方向选项不起作用

php - cakephp 图像助手在本地工作但不在线

php - 如何从 php 表单中的单选按钮获取值并检查另一个 php 中的值

javascript - 如何从叶节点的一组路径片段构建树

javascript - 将数组中的所有数字填充到随机 div 中

javascript - JS/MongoDB : Check if nested field is existing in a object (collection document)

php - 如何将 jQuery 多个值存储到 php $_SESSION