УВЕДОМЛЕНИЕ: С 12 ИЮЛЯ 2018 г. ДРУГИЕ ОТВЕТЫ ВСЕ УСТАРЕЛИ.JSONP СЕЙЧАС РАССМОТРЕЛ УЖАСНУЮ ИДЕЮ
Если у вас есть JSON в виде строки, JSON.parse()
будет работать нормально.Так как вы загружаете JSON из файла, вам нужно сделать XMLHttpRequest к нему.Например (это пример w3schools.com):
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var myObj = JSON.parse(this.responseText);
document.getElementById("demo").innerHTML = myObj.name;
}
};
xmlhttp.open("GET", "json_demo.txt", true);
xmlhttp.send();
<!DOCTYPE html>
<html>
<body>
<h2>Use the XMLHttpRequest to get the content of a file.</h2>
<p>The content is written in JSON format, and can easily be converted into a JavaScript object.</p>
<p id="demo"></p>
<p>Take a look at <a href="json_demo.txt" target="_blank">json_demo.txt</a></p>
</body>
</html>
Он не будет работать здесь, так как этот файл не находится здесь.Перейти к этому примеру w3schools: https://www.w3schools.com/js/tryit.asp?filename=tryjson_ajax
Вот документация для JSON.parse (): https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse
Вот краткое изложение:
Метод JSON.parse () анализирует строку JSON, создавая значение JavaScript или объект, описываемый этой строкой.Может быть предоставлена дополнительная функция восстановления, чтобы выполнить преобразование результирующего объекта до его возвращения.
Вот пример, используемый:
var json = '{"result":true, "count":42}';
obj = JSON.parse(json);
console.log(obj.count);
// expected output: 42
console.log(obj.result);
// expected output: true
Вот сводка запросов XMLHttp из https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest:
Использование объектов XMLHttpRequest (XHR) для взаимодействия с серверами.Вы можете извлечь данные из URL без необходимости полного обновления страницы.Это позволяет веб-странице обновлять только часть страницы, не нарушая при этом действия пользователя.XMLHttpRequest широко используется в Ajax-программировании.
Если вы не хотите использовать XMLHttpRequests, то способ JQUERY (который я не уверен, почему он не работает для вас) равен http://api.jquery.com/jQuery.getJSON/
Поскольку это не работает, я бы попробовал использовать XMLHttpRequests
Вы также можете попробовать AJAX-запросы:
$.ajax({
'async': false,
'global': false,
'url': "/jsonfile.json",
'dataType': "json",
'success': function (data) {
// do stuff with data
}
});
Документация: http://api.jquery.com/jquery.ajax/