Загрузить файл LOCAL JSON в HTML с использованием JS (и jquery и / или AJAX); ОТВЕТ = НЕВОЗМОЖНО - PullRequest
0 голосов
/ 02 сентября 2018

Определение проблемы:

Я программирую один HTML-файл для локального запуска на пользовательском компьютере, НЕ РАБОТАЮЩИЙ КАК СЕРВЕР. Пользователь может запустить этот HTML-файл, локально хранящийся на его компьютере. HTML-файл будет генерировать таблицу динамически на основе данных, хранящихся на его компьютере локально в определенной папке (которая всегда одинакова). Эти данные представляют собой файл JSON.

Для ясности предположим, что файл JSON находится в той же папке, что и файл HTML.

Я много читаю в интернете и переполнение стека безрезультатно. Например: а) здесь с:

$.getJSON("books.json", function(json) {
    console.log(json);
    //access your JSON file through the variable "json"
});

не работает.

Или используя этот код :

jQuery.getJSON("data.json", handleJSON);

function handleJSON(result){
   jQuery.each(result, printFields);
}

function printFields(i, field){
   let row = field.id + " "+field.first_name + " "+field.last_name + " <br>";
   jQuery("div").append(row);
}

консоль говорит: [Ошибка] Не удалось загрузить ресурс: предварительный ответ не был успешным (data.json, строка 0) [Ошибка] XMLHttpRequest не может загрузить файл: ///Users/jose/CODE/HTML/ConceptsHTML/example%203/data.json. Ответ перед полетом не успешен

Есть несколько других ссылок переполнения стека, которые я мог бы здесь разместить. Никто не функционирует так гладко, как говорят. (Я использую MAC и пробую HTML в Safari и Chrome)

В конечном счете, я хочу передать JSON в массив для доступа к другим сценариям HTML.

Примечание. Существует несколько решений, в которых говорится, что локальный компьютер должен работать как сервер, и на нем должен выполняться Httprequest. Ну, я не могу этого сделать, поскольку пользователи могут открывать только html-файл, но от них нельзя ожидать ничего, что могло бы настроить машину как никогда.

Я был бы очень очень рад, если бы мне подсказали, что делать дальше. Прямо сейчас я даже не знаю, возможно ли это на самом деле.

спасибо большое

Ответы [ 3 ]

0 голосов
/ 03 сентября 2018

ОТВЕТ ЕСТЬ:

НЕВОЗМОЖНО ПРОЧИТАТЬ ЛОКАЛЬНЫЕ ФАЙЛЫ (ФАЙЛЫ НА МАШИНЕ ПОЛЬЗОВАТЕЛЯ) С HTML-ФАЙЛОМ ПО ПРИЧИНАМ БЕЗОПАСНОСТИ.

Самое смешное, что есть много постов, говорящих об обратном.

Я ПОНИМАЮ, ЧТО, ЕСЛИ ЭТО БЫЛО ВОЗМОЖНО, ЧУВСТВИТЕЛЬНЫЕ ДАННЫЕ МОГУТ БЫТЬ УКРАШЕННЫМИ.

Улучшение для будущих версий HTML будет заключаться в создании пути для локальных. Пользователь должен сообщить локальному браузеру, какая локальная папка «свободна», чтобы быть доступной по html.

0 голосов
/ 03 сентября 2018

Сначала необходимо проанализировать загруженный файл json, потому что перед синтаксическим анализом содержимое является просто строкой, и вы не можете с ней справиться. Пожалуйста, сделайте, как показано ниже:

function handleJSON(result){
   result = JSON.parse(result); // using json.parse function to convert string to a valid json model.
   jQuery.each(result, printFields);
}

Надеюсь, вам это поможет.

0 голосов
/ 02 сентября 2018

Вы можете просто использовать другой JS-файл и ссылаться на него в своем HTML-файле, а затем в этом JS-файле просто создать объект с нужными вам данными.

HTML:

<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript" src="json.js"></script>
    <script type="text/javascript">
        function fun(){
            alert(json.data);
        }
    </script>
</head>
<body>
    <button onclick="fun();">push me</button>
</body>
</html>

JS (json.js):

var json = {
data : "hello world"
};

Невозможно сделать ссылку на локальный файл JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...