如何在没有jQuery的情况下在JavaScript中打开JSON文件?

时间:2012-03-23 11:58:08

标签: javascript json xmlhttprequest

我正在用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>');
} 

4 个答案:

答案 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 与jQuery有关。

现在的代码有没有错误。


要存储变量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从磁盘读取文件。