1

我正在使用https://github.com/evanplaice/jquery-csv加载 csv 文件。在我尝试重新加载 .csv 文件并将新数据加载到 GeoCharts 之前,一切正常。我知道重新加载文件有问题,但如何处理呢?这是示例代码:

function load(file, colorForSex){

    var region = $('select[name="region"] option:selected').val();

    setTimeout(1000);

    $.get(file, function(data) {

        var newData = $.csv.toArrays(data);

        var j = 1;

        for (var i = 1; i < newData.length; i++) {
           newData[i][j] = parseFloat(newData[i][j]);
        }

    }, 'text');

    console.log(newData[1][1]);


    setTimeout(1000);

    var data = google.visualization.arrayToDataTable(newData);

    var options = {
        region: region,
        backgroundColor: 'none',
        chartArea: { width: '100%', height: '100%' },
        colorAxis: {colors: ['#ddd', colorForSex]},
        datalessRegionColor: 'white',
        legend: {
            numberFormat: '.##',
            textStyle: {
                fontName: 'Verdana',
                color: '#ff1a1a',
                fontSize: 14
            }
        }   
    };

    setTimeout(1000);


    chart.draw(data, options);
}
4

2 回答 2

1

需要在$.get函数 中包含其余的图表代码

$.get异步的

因此,函数之后的代码$.get函数完成 之前运行$.get

请参阅以下片段...

function loadData(file, colorForSex){
  var region = $('select[name="region"] option:selected').val();
  var file = file + '?q=' + Math.random();
  $.get(file, function(data) {
    var processedData = $.csv.toArrays(data);
    var j = 1;
    for (var i = 1; i < processedData.length; i++) {
      processedData[i][j] = parseFloat(processedData[i][j]);
    }

    var data = google.visualization.arrayToDataTable(processedData);

    var options = {
      region: region,
      backgroundColor: 'none',
      chartArea: { width: '100%', height: '100%' },
      colorAxis: {colors: ['#ddd', colorForSex]},
      datalessRegionColor: 'white',
      legend: {
        numberFormat: '.##',
        textStyle: {
            fontName: 'Verdana',
            color: '#ff1a1a',
            fontSize: 14
        }
      }   
    };

    chart.draw(data, options);
  }, 'text');
}
于 2017-07-06T21:26:51.177 回答
0

您可以将一些参数添加到文件中以禁用缓存

代替: $.get(file, function(data) {

至: var d = new Date(); $.get(file + '?' + d.getTime(), function(data) {

于 2017-07-02T00:29:40.473 回答