我有两个小提琴,除了可以向文档提供数据的方式外。
- 小提琴1可以使用我想要的方式,我使用d3.csv方法调用数据,并将数据可用于我的可提琴
- 小提琴2使用AJAX,我将数据分配给我认为可以用于其他功能的全局数组,但是数据并未显示在我的可提琴中。
我假设我引用数据的方式是不正确的,但是我真的不知道为什么我的可提座能够实现9行数据,因此传递了非零数组,但没有显示数据?我是JavaScript的新手。
更新1:Fiddle 2更新了我通过将Asynch更改为错误的人来解释为什么解决问题来掌握的数据?
小提琴2
的javascriptvar csvLink = 'https://storage.googleapis.com/directionalsurvey/testDScsv.csv';
var csvdata = [];
//var trueTVD = X6J374YZ;
var trueTVD = 700;
$( document ).ready(function() {
$.ajax({
url:csvLink,
dataType:"text",
success:function(data)
{
var split_data = data.split(/r?n|r/);
//console.log(split_data);
for(var i = 0; i < split_data.length-1; i++){
var cell_data = split_data[i].split(",");
var inner = [];
inner.push(cell_data[0]);
inner.push(cell_data[1]);
inner.push(cell_data[2]);
csvdata.push(inner);
}
}
});
console.log( "ready!" );
console.log(csvdata);
});
var container1 = document.getElementById('Table'),
hot1;
var hot1 = new Handsontable(container1, {
data: csvdata,
colHeaders: ['Measured Depth', "Inclination", "Azimuth"],
rowHeaders: true,
minSpareRows: 0,
contextMenu: ['row_above', 'row_below', 'remove_row']
});
小提琴1
的javascriptvar csvLink = 'https://storage.googleapis.com/directionalsurvey/testDScsv.csv';
var data = [];
//var trueTVD = X6J374YZ;
var trueTVD = 700;
d3.csv(csvLink, function(dat) {
for (i = 0; i < dat.length; i++) {
var inner = [];
inner.push(dat[i]['Measured Depth']);
inner.push(dat[i]['Inclination']);
inner.push(dat[i]['Azimuth']);
data.push(inner);
}
var container1 = document.getElementById('Table'),
hot1;
var hot1 = new Handsontable(container1, {
data: data,
colHeaders: ['Measured Depth', "Inclination", "Azimuth"],
rowHeaders: true,
minSpareRows: 0,
contextMenu: ['row_above', 'row_below', 'remove_row']
});
问题在于它被称为异步,并且在传递到其他功能之前,数据未完全加载。通过设置异步:false ajax调用以完全加载CSV文件,然后再继续执行JavaScript的其余部分。
$( document ).ready(function() {
$.ajax({
url:csvLink,
dataType:"text",
async: false,
success:function(data)
{
这解决了我的问题。