Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过jquery导入CSV-变量锁定_Javascript_Jquery_Ajax_Csv - Fatal编程技术网

Javascript 通过jquery导入CSV-变量锁定

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/

我使用一个很好的代码来导入csv数据。 然而,我的变量似乎在函数中被捕获,因此我无法从.js中的其他位置访问它

请参阅下面代码中的两个警报函数

从post()复制的代码

$(文档).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(...)
        }
    });
});