ここで髪を抜く。
Jquery、複数のJSONファイルとAjax
データを収集し、JSONファイルをWebサーバー上のフォルダーにダンプするPythonスクリプトがあります
私はそのデータを視覚化しようとしています。
基本的に、私は最初にSVGマップを描画し、ダミーのjsonファイルで色付けしています。続いて、JSONデータを使用して色を付けたいと思います。各JSONファイルは、マップの1つの完全なレンダリング(色付け)を表します。
ディレクトリ内のファイルを返すphpスクリプトへのAjax呼び出しを使用しています。次に、Ajax(または省略形の.getJson)を使用して、そのファイルのデータを格納し、マップに色を付けてから、次のファイルに移動します(最終結果はアニメーションです)。問題は、AJAXの非同期性であり、Ajaxビットのタイムリーな実行と完了を制御できないことです。明らかに、ブラウザをロックしたくないので、同期呼び出しをしたくありません。
これが私のコードです(お詫び-かなり重いです)
jQuery(document).ready(function() {
$(function() {
var map, c = [];
var dep_data;
var val = {};
var max= 0;
var vals = new Array();
c = $('#map');
c.height(c.width()*.5);
drawMap('mapData.json');
function drawMap(url){
console.log(url);
$.ajax({
url: 'mapData.json',
dataType: 'json',
success: function(data) {
dep_data = data;
map = window.m = $K.map('#map', 600, 800);
map.loadMap('ireland.svg', function() {
map.loadStyles('./mapping_files/style.css');
map.addLayer({
id: 'regions',
key: 'name-1'
});
colourMap(dep_data);
var mapData = $.ajax({
url: './php/getfiles.php',
type : 'POST',
dataType: 'json',
success: function (files){
for (_a in files.response){
for (_b in files.response[_a]){
$.ajax({
url: files.response[_a][_b],
dataType: 'json',
success: function (json){
colourMap(json);
$(this).dequeue();
}
});
}
}
},
error: function (files){
console.log(files.message);
},
});
});
}
});
}
colourMap = function(data) {
//do the coloring in...
}
}); });