4

我有一个非常大的数据集(大约 500 000 条记录...),关于伦敦的二氧化碳排放量,我想使用交叉过滤器与地图和图表一起显示。出于性能的原因,我想事先按行政区进行查询,所以我做了一个 ajax 函数,当我点击行政区时会动态执行此操作(想象一下伦敦地图,上面有行政区边界,我们可以点击它们)。Ajax 代码工作正常:

function load_data(str){
var londonData = null;
    $.ajax({
        url: "php/london-data.php",
        data: "name='"+str+"'",
        type: 'get',
        async: false,
        success: function(data) {
            londonData = data;
        }
    });
alert(JSON.stringify(londonData));

return londonData;}

它返回一个 json 文件。当我单击一个自治市镇时,警报功能会显示数据已更新。但是要使用交叉过滤器,我希望有一个全局变量,当您单击一个自治市镇时,由于 load_data 函数,它会更新,但它不起作用 -> 变量保持与初始化时相同的值。

我不知道我是否足够清楚,但你认为有一个解决方案来更新这个全局变量,从而更新交叉过滤器数据吗?就像是 :

layer.on("click", function (e) {
             londonData = load_data(/*name of the layer clicked on*/)
        });
dataset = crossfilter(londonData);

最后,我希望我的图表在我点击一个自治市镇时更新,所以当我点击一个自治市镇时,“数据集”变量必须改变。不知道这是否可能,或者我是否做错了......无论如何,提前感谢您的帮助。

4

1 回答 1

0

我认为由于ajax请求是异步的,你必须在success函数中应用crossfilter函数。因此,只有在加载 ajax 数据后才能创建和使用交叉过滤器数据。

于 2013-05-27T05:22:17.207 回答