2014-01-28 4 views
1

У меня есть программа Python, которая генерирует html-страницу для представления результатов. Страница html сохраняется в каталоге вывода на диске вместе с файлом javascript, который помогает с динамической обработкой таблиц. Я также сохраняю JSON-файл в этом выходном каталоге, который хотел бы прочитать в моем файле javascript. Этот JSON-файл содержит данные из запуска Python (сохраненный словарь), к которому я хотел бы иметь доступ. Таким образом, в выходной каталог на диске у меня есть:Как получить доступ к локальному файлу JSON с Javascript?

  • C: /somedirectory/output/report.html
  • C: /somedirectory/output/tables.js
  • C:/somedirectory/выход/данные .json

Все файлы были созданы из моей программы.

На моей странице html есть таблица с флажками, и если эти флажки выделены, я бы хотел обновить вторую таблицу на основе данных, сохраненных в файле JSON. Таким образом, я хотел бы открыть свой html-отчет в любом браузере и прочитать в JSON-файле как объект javascript.

Я пытался использовать Ajax и .getJSON, но я набираюсь

Нет 'Access-Control-Allow-Origin' заголовок присутствует на запрошенный ресурс. Поэтому исходный 'null' не допускается.

Я искал и видел много подобных проблем, но не встретил ничего, что вполне соответствует мне. Мы будем очень благодарны за мысли и работу. Благодарю.

Update

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

+2

Вы используете этот HTML-код с реального сервера или на вашем компьютере локально? – mjkaufer

+2

Похоже, что вы обращаетесь к json локально, что приведет к проблемам из [той же политики происхождения] (http://en.wikipedia.org/wiki/Same-origin_policy). Чтобы обойти это, используйте [jsonp] (http://en.wikipedia.org/wiki/JSONP). Вы должны указать это в своем вызове ajax, указав, что dataType: «jsonp» –

+0

@mjkaufer Ничего не работает с реального сервера, файлы локальны для компьютера. Идея заключается в том, что пользователь устанавливает программу python на рабочем столе, запускает программу и может вытащить хорошо отформатированный html-отчет о результатах. – Doug

ответ

1

JavaScript работает на клиентской машине, поэтому он может обращаться к файлам только на клиентской машине, используя специальную настройку.

Если вы хотите, чтобы прочитать JSON на сервере, вы должны использовать путь:

http://example.com/output/data.json 

Лучше путь будет для чтения/записи в формате JSON файл из Python, а затем отправить данные таблицы к JavaScript как в этом ответе: Send data from Python to Javascript (JSON)

+1

В итоге я перешел к аналогичному подходу, к которому вы обратились в ссылке. Ответ для меня на данный момент заключается в том, чтобы внедрить все на html-странице, включая javascript и json-данные. Затем файл html можно передавать без зависимостей. Благодаря! – Doug

Смежные вопросы