2013-05-09 34 views
4

我有一個非常大的數據集(約500 000條記錄...),我想用地圖和圖表使用交叉過濾器顯示倫敦的二氧化碳排放量。由於性能的原因,我想事先通過自治市鎮進行查詢,所以我做了一個ajax函數,當我點擊一個自治市鎮時,它會動態地實現這個功能(想象一下倫敦的地圖和我們可以點擊它們的區域邊界) 。 Ajax代碼工作正常:使用帶有交叉過濾器的'Ajax updated'數據集

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); 

最後我想,我的圖表更新,當我點擊一個區,所以「數據集」變量改變,當我點擊一個。不知道是否有可能,或者我是否完全錯誤... 無論如何謝謝您的幫助。

回答

0

我想因爲ajax請求是異步的,所以你必須在成功函數中應用crossfilter函數。因此,只有在加載ajax數據後才能創建和使用交叉過濾器數據。