我正在用JavaScript编写一些代码。在这段代码中我想读一个json文件。该文件将从URL加载。
如何在JavaScript中的对象中获取此JSON文件的包含?
这是我的JSON文件,位于../json/main.json
:
{"mainStore":[{vehicle:'1',description:'nothing to say'},{vehicle:'2',description:'nothing to say'},{vehicle:'3',description:'nothing to say'}]}
我想在我的table.js
文件中使用它,如下所示:
for (var i in mainStore)
{
document.write('<tr class="columnHeaders">');
document.write('<td >'+ mainStore[i]['vehicle'] + '</td>');
document.write('<td >'+ mainStore[i]['description'] + '</td>');
document.write('</tr>');
}
答案 0 :(得分:42)
这是一个不需要jQuery的例子:
function loadJSON(path, success, error)
{
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function()
{
if (xhr.readyState === XMLHttpRequest.DONE) {
if (xhr.status === 200) {
if (success)
success(JSON.parse(xhr.responseText));
} else {
if (error)
error(xhr);
}
}
};
xhr.open("GET", path, true);
xhr.send();
}
将其命名为:
loadJSON('my-file.json',
function(data) { console.log(data); },
function(xhr) { console.error(xhr); }
);
答案 1 :(得分:1)
JSON
现在的代码有没有错误。
要存储变量mainStore
,它是json中的变量。
您应该将json存储到变量:
var myJSON = {"mainStore":[{vehicle:'1',description:'nothing to say'},{vehicle:'2',description:'nothing to say'},{vehicle:'3',description:'nothing to say'}]};
var mainStore = myJSON.mainStore;
//.. rest of your code.
答案 2 :(得分:1)
XHR可以用来打开文件,但是你基本上对自己很难,因为jQuery使你更容易。 $.getJSON()
使这很容易做到。我宁愿打电话给单行而不是试图让整个代码块工作,但这取决于你...
为什么我不想使用jQuery是因为我工作的人不想要它因为他害怕脚本的速度。
如果他无法正确配置本机VS jQuery,他甚至不应该编写本机代码。
害怕意味着他不知道自己在做什么。如果您打算提高性能,实际上您需要知道如何更快地制作某些代码。如果你只是认为jQuery很慢,那么你走的是错误的道路......
答案 3 :(得分:0)
据我所知,通过“读取json文件”,您的意思是向返回json内容的url发出请求。如果是这样,那么你能解释为什么你不想为此目的使用jQuery吗?它具有$ .ajax功能,非常适合这种情况,并涵盖浏览器的差异。
如果你想阅读文件,那么你必须在服务器端进行,例如PHP并以某种方式提供给dom(有不同的方法)所以js可以使用它。 无法使用js从磁盘读取文件。