Javascript 通过jquery导入CSV-变量锁定
我使用一个很好的代码来导入csv数据。 然而,我的变量似乎在函数中被捕获,因此我无法从.js中的其他位置访问它 请参阅下面代码中的两个警报函数 从post()复制的代码Javascript 通过jquery导入CSV-变量锁定,javascript,jquery,ajax,csv,Javascript,Jquery,Ajax,Csv,我使用一个很好的代码来导入csv数据。 然而,我的变量似乎在函数中被捕获,因此我无法从.js中的其他位置访问它 请参阅下面代码中的两个警报函数 从post()复制的代码 $(文档).ready(函数(){ $.ajax({ 键入:“获取”, url:“../recipes.csv”, 数据类型:“文本”, 成功:功能(数据){ 过程数据(数据); } }); }); 函数processData(allText){ var allTextLines=allText.split(/\r\n |\n/
$(文档).ready(函数(){
$.ajax({
键入:“获取”,
url:“../recipes.csv”,
数据类型:“文本”,
成功:功能(数据){
过程数据(数据);
}
});
});
函数processData(allText){
var allTextLines=allText.split(/\r\n |\n/);
var headers=allTextLines[0]。拆分(',');
var行=[];
对于(变量i=0;i
函数processData(…)
使用的dataArray
变量仅存在于函数内部
为了在函数之外使用它,您需要声明它。例如:
var dataArray = {};
function processData(allText) {
var allTextLines = allText.split(/\r\n|\n/);
var headers = allTextLines[0].split(',');
var lines = [];
for (var i=0; i<allTextLines.length; i++) {
var data = allTextLines[i].split(',');
if (data.length == headers.length) {
var tarr = [];
for (var j=0; j<headers.length; j++) {
tarr.push(data[j]);
}
lines.push(tarr);
}
}
dataArray = (lines + "").split(';');
alert(dataArray[1]);
}
$(document).ready(function () {
$.ajax({
type: "GET",
url: "../recipes.csv",
dataType: "text",
success: function (data) {
processData(data);
alert(dataArray[1]); // here it will return the data from processData(...)
}
});
});
var-dataArray={};
函数processData(allText){
var allTextLines=allText.split(/\r\n |\n/);
var headers=allTextLines[0]。拆分(',');
var行=[];
对于(var i=0;i)。下面是JavaScript中变量作用域的一个有趣线程。以及如何在var dataArray={}中获取处理过的数据
,正如您所建议的,从函数processData
?这仍然会留下一个空对象dataArray
。查看@OP:This是正确的注释,但由于ajax post未完成(*返回),因此仍将输出未定义的内容在发出第一个警报之前called@MarvinSmit这是正确的。我正在编辑Clarity的代码片段,只是为了更好地理解。在声明变量时是否也有向上级联的方法?比如写入“.parent var dataArray={}”?我有一个新的例子,根据导入的csv的标题行定义变量名。因此,我无法在。。。
var dataArray = {};
function processData(allText) {
var allTextLines = allText.split(/\r\n|\n/);
var headers = allTextLines[0].split(',');
var lines = [];
for (var i=0; i<allTextLines.length; i++) {
var data = allTextLines[i].split(',');
if (data.length == headers.length) {
var tarr = [];
for (var j=0; j<headers.length; j++) {
tarr.push(data[j]);
}
lines.push(tarr);
}
}
dataArray = (lines + "").split(';');
alert(dataArray[1]);
}
$(document).ready(function () {
$.ajax({
type: "GET",
url: "../recipes.csv",
dataType: "text",
success: function (data) {
processData(data);
alert(dataArray[1]); // here it will return the data from processData(...)
}
});
});