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

标签 javascript jquery ajax csv

我使用了一个很好的代码来导入 csv 数据。 但是,我的变量似乎以某种方式被函数捕获,所以我无法从我的 .js 中的其他地方访问它 ...

在下面的代码中查看我的两个警报函数。

从帖子中复制的代码(How to read data From *.CSV file using javascript?)

$(document).ready(function () {
    $.ajax({
        type: "GET",
        url: "../recipes.csv",
        dataType: "text",
        success: function (data) {
            processData(data);
        }
    });
});

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]); // here it works
}
alert(dataArray[1]); // here it doesn't work: "ReferenceError: dataArray is not defined"

最佳答案

函数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(...)
        }
    });
});

What is the scope of variables in JavaScript? .这是一个关于 JavaScript 中变量范围的有趣线程。

关于javascript - 通过 jquery 导入 CSV - 变量锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19875027/

相关文章:

php - 上传到服务器后不允许英特尔 XDK Ajax 访问 [在 xampp 中工作良好]

javascript - 通过单击链接更改Javascript中的SRC

javascript - 在表格顶部 float <div> 元素?

javascript - 在 redux store 中处理 "selected"项的正确方法

javascript - angularjs范围两个值保持指向彼此

javascript - 使用 JSON 对象中的数据进行动态货币转换

javascript - 使用 Comet 长轮询在 Ext JS 中更新模型和存储

javascript - 无法直接访问 ajax 响应属性,尽管它存在

javascript - javascript中的String.fromCharCode(decimal value)是否也支持扩展字符

javascript - GAPI 的 OAuth - 首次登录 Javascript 后避免身份验证和授权