我有一个非常大的数据集(大约500 000条记录......)关于伦敦的二氧化碳排放,我希望使用crossfilter显示地图和图表。 出于性能原因,我想事先通过自治市镇进行查询,所以我做了一个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文件。当我点击一个行政区时,警报功能会向我显示数据已更新。 但是为了使用crossfilter,我希望有一个全局变量,当你点击一个行政区时会更新,这要归功于load_data函数,但它不起作用 - >变量保持与初始化时相同的值。
我不知道我是否足够清楚,但您认为有更新此全局变量的解决方案,并因此更新了横切滤波器数据吗?类似的东西:
layer.on("click", function (e) {
londonData = load_data(/*name of the layer clicked on*/)
});
dataset = crossfilter(londonData);
最后,当我点击一个行政区时,我希望我的图表更新,因此当我点击一个时,'dataset'变量必须改变。不知道是否可能,或者我是否完全错了...... 无论如何,提前感谢您的帮助。
答案 0 :(得分:0)
我认为由于ajax请求是异步的,因此必须在success函数中应用crossfilter函数。因此,只有在加载ajax数据后才能创建和使用crossfilter数据。