使用Javascript读取文件到数组 - 似乎无法使其工作

时间:2016-01-11 18:36:32

标签: javascript arrays file parsing

我有一个简单的2列csv文件,我希望我的网站读取并最终解析成一个数组。数据采用以下格式:

Atlanta Braves,Atlanta_Braves
巴尔的摩金莺,Baltimore_Orioles
波士顿红袜队,Boston_Red_Sox

该文件当前存储在与我的html文件相同的位置。我试图使用ajax请求将数据从文件中拉入数组,然后进一步解析myArray [0] [0] ='Atlanta Braves'。

这是我的代码:

var myArray = [];

$.ajax({
    type: 'GET',
    url: 'datafilename.csv',
    success: function(data){processData(data);}
});

function processData(data){
    myArray = data.split('\n');
    for (i = 0; i < myArray.length; i++){
        myArray[i] = myArray[i].split(',');
    }       
}

alert(myArray[0][0]);

不幸的是,警报只返回'undefined'。我在这做错了什么?任何反馈都将不胜感激。

1 个答案:

答案 0 :(得分:4)

$.ajax是一个异步函数。这意味着在您的其他同步代码已经运行之后的某个时间之后它才会完成。尝试添加:

function processData(data) {
    // Your existing code goes here...
    alert(myArray[0][0]);
}

这是有效的,因为processData仅在 AJAX调用返回后运行。异步函数基本上是这样的:

var value = 1;
setTimeout(function() {
  value = 2; // This won't happen for about 1 second
  console.log(value); // 2
}, 1000); // Run this function in 1 second
console.log(value); // 1. This happens almost immediately, without pause