我有一个简单的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'。我在这做错了什么?任何反馈都将不胜感激。
答案 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