Подтвердить что ты не робот

Как я могу открыть JSON файл в JavaScript без jQuery?

Я пишу код в JavaScript. В этом коде я хочу прочитать json файл. Этот файл будет загружен из URL.

Как я могу получить содержимое этого JSON файла в объекте в JavaScript?

Это, например, файл 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>');
} 
4b9b3361

Ответ 1

Вот пример, который не требует 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); }
);

Ответ 2

JSON имеет ничего для работы с jQuery.

С кодом, который у вас есть, есть nothing.


Чтобы сохранить переменную 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.

Ответ 3

XHR можно использовать для открытия файлов, но тогда вы в основном усложняете себя, потому что jQuery делает это намного проще для вас, $.getJSON() делает это так легко сделать. Я бы предпочел бы назвать одну строку, чем пытаться заставить весь блок кода работать, но это зависит от вас...

Почему я не хочу использовать jQuery, потому что человек, над которым я работаю, не хочет этого, потому что он боится скорости script.

Если он не может правильно профилировать собственный VS jQuery, он не должен даже программировать собственный код.

Боясь, что он не знает, что делает. Если вы планируете перейти на производительность, вам действительно нужно знать, как быстро сделать некоторые фрагменты кода. Если вы только думаете, что jQuery медленный, то вы идете по неправильным дорогам...

Ответ 4

Я понимаю, что, "прочитав json файл", вы имеете в виду сделать запрос к URL-адресу, который возвращает json-контент. Если да, то можете ли вы объяснить, почему вы не хотите использовать jQuery для этой цели? Он имеет функцию $.ajax, которая идеально подходит для этого и покрывает различия между браузерами.

Если вы хотите прочитать файл, вы должны сделать это на стороне сервера, например. php и предоставить его как-то в dom (существуют разные методы), поэтому js может его использовать. Чтение файла с диска с помощью js невозможно.