在Javascript中从文件中读取变量

时间:2014-04-19 16:05:19

标签: javascript variables readfile

我在Javascript中有一个名为words的变量,如下所示:

var words = [{"text":"This", "url":"http://google.com/"},
         {"text":"is", "url":"http://bing.com/"},
         {"text":"some", "url":"http://somewhere.com/"},
         {"text":"random", "url":"http://random.org/"},
         {"text":"text", "url":"http://text.com/"},
         {"text":"InCoMobi", "url":"http://incomobi.com/"},
         {"text":"Yahoo", "url":"http://yahoo.com/"},
         {"text":"Minutify", "url":"http://minutify.com/"}]

我使用变量元素,例如words[0].url指向第一个网址,即http://google.com/等。

如果我将数据存储在这样的文件中(我称之为file.csv):

This, http://google.com/
is, http://bing.com/
some, http://somewhere.com/
random, http://random.org/
text, http://text.com/
InCoMobi, http://incomobi.com/
Yahoo, http://yahoo.com/
Minutify, http://minutify.com/   

如何在Javascrip中读取文件并重新创建变量words,格式与我前面提到的完全相同,即重新创建:

var words = [{"text":"This", "url":"http://google.com/"},
         {"text":"is", "url":"http://bing.com/"},
         {"text":"some", "url":"http://somewhere.com/"},
         {"text":"random", "url":"http://random.org/"},
         {"text":"text", "url":"http://text.com/"},
         {"text":"InCoMobi", "url":"http://incomobi.com/"},
         {"text":"Yahoo", "url":"http://yahoo.com/"},
         {"text":"Minutify", "url":"http://minutify.com/"}]

2 个答案:

答案 0 :(得分:0)

看起来有两个步骤。首先是获取外部文件,下一步是将其转换为您想要的格式。

如果你不使用jquery,第一步是:

var file = new XMLHttpRequest();

file.onload = function() {
  alert(file.responseText);

}

file.open('GET', 'file.csv');
file.send();

下一步是获取该file.responseText并对其进行格式化。我可能会这样做:

var file = new XMLHttpRequest();
var words = [];


file.onload = function() {

   var lines = file.responseText.split("\n");

    for (var i = 0; i < lines.length; i++) {
        var word = {};
        var attributes = lines[i].split(",");
        word.text = attributes[0];
        word.url = attributes[1];
        words.push(word);
    }

}

file.open('GET', 'file.csv');
file.send();

如果您正在使用JSON文件,只需将上面的函数更改为:

file.onload = function() {
    words = JSON.parse(file.responseText);
}

请记住,在onload函数运行之前,单词变量将不可用,因此您应该将其发送到使用它的另一个函数。

答案 1 :(得分:0)

你可以使用fetch API,它有很多优点,其中一个是非常短的语法,与XMLHttpRequest构造函数不同。

&#13;
&#13;
fetch("object.json").then(function(data){window.data=data.json()});
//then access the data via [window.data]
&#13;
&#13;
&#13;