2013-05-09 1 views
4

크로스 필터를 사용하여지도와 차트로 표시하려는 런던의 CO2 배출량에 대한 데이터 세트가 약 500,000 개입니다. 성능면에서 저는 자치구에 의해 사전에 쿼리를하고 싶습니다. 그래서 자치구를 클릭하면 역동적으로 수행하는 아약스 기능을 수행했습니다. 런던의지도를 클릭하면 해당 지역을 볼 수 있습니다. . 아약스 코드는 잘 작동 :크로스 필터를 사용하여 '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;} 

IT는 JSON 파일을 반환합니다. 자치구를 클릭하면 알림 기능에 데이터가 업데이트 되었음이 표시됩니다. 그러나 crossfilter를 사용하려면 load_data 함수 덕분에 보로를 클릭 할 때 전역 변수가 업데이트되기를 원했으나 작동하지 않습니다 -> 변수가 초기화 된 것과 동일한 값을 유지합니다.

내가 충분히 명확한지는 모르겠지만이 전역 변수를 업데이트하고 크로스 필터 데이터를 업데이트하는 솔루션이 있다고 생각합니까? 같은 뭔가 : 끝에

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

나는 나의 차트 업데이트는 무엇 자치구를 클릭하면 것을 좋아하는 것, 그래서 '데이터 세트'변수 내가 하나를 클릭하면 변경할 수 있습니다. 가능한지 또는 완전히 잘못하고 있는지 모르겠다. 어쨌든 도움을 주셔서 감사합니다.

답변

0

나는 ajax 요청이 비동기 적이기 때문에 success 함수에서 crossfilter 함수를 적용해야한다고 생각한다. 따라서 Ajax 데이터가로드 된 후에 만 ​​크로스 필터 데이터를 만들고 사용할 수 있습니다.