我在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/"}]
答案 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
构造函数不同。
fetch("object.json").then(function(data){window.data=data.json()});
//then access the data via [window.data]
&#13;