$ .get JSON не работает для локального файла в Cordova - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть базовое c приложение, написанное на Cordova, которое пытается извлечь локальный файл JSON, хранящийся в подкаталоге www/menus приложения. Мой код Javascript выглядит следующим образом:

function loadMenuJSON() {
    var jsonPath = "../menus/" + menuc + ".json";
    $.getJSON(jsonFile, function(result) {
        alert("Received JSON.");
        sortAllergies(result);
    });
}

Когда я пытаюсь сделать предупреждение за пределами оператора get JSON, он работает нормально, но предупреждение "Received JSON" не появляется, то есть не получить объект. Я удалил заголовок из файла HTML, который блокирует запросы, и указал в моей конфигурации. xml, что приложение должно разрешать все запросы на любые адреса. Моя проблема возникает только в Android и iOS, а не при сборке в браузере.

РЕДАКТИРОВАТЬ: У меня также были проблемы при попытке отладки, потому что я не могу получить доступ к Javascript консоль на эмуляторе Android.

1 Ответ

0 голосов
/ 06 апреля 2020

После дальнейших исследований я узнал, что сборка Cordova на Android обычно ожидает ссылки на JS файлы с нечетным абсолютным путем. Что вы можете сделать, это заменить свой путь тем, который относится абсолютно к файловой системе приложения, например:

var path = window.location.href.replace('index.html', '');
var jsonFile = path + "menus/" + menuc + ".json";
$.getJSON(jsonFile, function(result) {
    sortAllergies(result);
});

Вы захотите заменить index.html на имя файла HTML, который вы ' повторный вызов JS от, например. menus.html.

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