Javascript + jQuery UI: после вывода переменной JSON в файл, как прочитать значение обратно? - PullRequest
0 голосов
/ 30 мая 2011

Я довольно новичок в JS и даже больше в jQuery UI.Я не понимаю, имеет ли моя проблема очень простое синхронное решение, или мне нужно написать функции обратного вызова, чтобы справиться с чем-то, что не может быть чем-то еще, кроме асинхронного ...

У меня было это в сценарии, связанномс HTML-документом:

var json = "[{ ... some object ... }]"

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

Я вижу, что при работе HTML-страница будет обслуживаться HTTP-сервером, и файл должен быть удаленно извлечен с использованием HTTP на сервере.Но также и то, что если я хочу протестировать страницу на моей машине разработки без сервера, это просто чтение локального файла.

Есть ли один фрагмент кода, который может прочитать значение JSON в обеих ситуациях,в синхронном режиме, чтобы было возможно что-то подобное:

var json = ... piece of code...

Сначала я подумал, используя:

$.getJSON("file.json", function(obj) { json = obj; });

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

Любое руководство приветствуется.

1 Ответ

0 голосов
/ 30 мая 2011

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

Если это действительно большая проблема, вы можете использовать опцию async в $.ajax:

$.ajax({
  async: false,
  url: 'file.json',
  dataType: 'json',
  success: function (value) { json = value; }
});

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

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