我有一个简单的文件夹结构,例如:
project
│
└───data
│ file.json
│
└───js
test.js
我希望阅读file.json
中的test.js
做一些其他的后端工作。这是一个类似(但通用)的JSON文件:
{"key1": 50, "key2": 6, "key3": 20,
"ke4": 18, "key5": 38, "key6": 30}
到目前为止,我已经尝试过:
var request = new XMLHttpRequest();
request.open("GET", "< path >", false);
request.send(null)
var my_JSON_object = JSON.parse(request.responseText);
alert(my_JSON_object.result[0]);
但是没有产生结果。
我已经检查了这个post和这个one。他们问类似的问题,但是他们已经很老了。
所以,我的问题是:如何做到这一点,并且有一种新的方式(例如,提取)来做到这一点?
答案 0 :(得分:1)
尽管这些答案有些陈旧,但是过时的代码仍然有效,可以回答问题的前半部分。只要有效,我就不会在乎已弃用的代码。我不确定jQuery的这种基本实现的最新情况,但它的工作方式与其他解决方案一样:
$.getJSON('data/file.json', function(data) {
console.log(JSON.stringify(data));
});
此外,从您在示例中提供的代码来看,它不起作用,因为您没有正确实现其异步特性。由于它是异步操作,因此需要指定一个回调函数以在文件加载后执行:
function readTextFile(file, callback) {
var request = new XMLHttpRequest();
request.overrideMimeType("application/json");
request.open("GET", "< path >", false);
request.onreadystatechange = function() {
if (request.readyState === 4 && request.status == "200") {
callback(request.responseText);
}
}
request.send(null);
}
// Implementation:
readTextFile("data/file.json", function(text){
var my_JSON_object = JSON.parse(text);
console.log(my_JSON_object);
alert(my_JSON_object.result[0]);
});
答案 1 :(得分:0)
我认为您提供的答案应该很有效。虽然,我认为文件路径可能是错误的。而不是:
$.getJSON('data/file.json', function(data) {
console.log(JSON.stringify(data));
});
不应该是:
$.getJSON('./data/file.json', function(data) {
console.log(JSON.stringify(data));
});
注意文件路径开头的“./”。