Чтение xml средствами JavaScript
Добрый день!
Работаю в банке в далёкой от программирования сфере, но решил вспомнить молодость :) и реализовать один проект: интерактивная карта с важными географическими объектами. Реализовывать приходится только средствами javascript. Для карты взял движок Lefleat. Но столкнулся со следующей проблемой: где хранить данные по географическим объектами (координаты, тип). Проштудировал интернет, так понял, что javascript'ом можно считывать расположенные на локальном диске xml-файлы. Планирую, что результатом будут два файла (html и xml) на общем сетевом диске. Но реализация, описанная тут http://xmlhttprequest.ru/ по какой-то причине не работает. Вопрос: не работает она из-за корявости моих рук или из-за того, что данная технология позволяет читать xml только с сервера? Подскажите, как из моей ситуации можно "выкрутиться"? :-? PS в банке на большинстве компьютеров браузер IE8, но скорее всего будут обновлять скоро. |
С javascript рекомендуется таки использовать json для данных. Гораздо удобнее.
Не работает же по второй причине. Если брать только ie, то оный может по своему работать с локальными файлами(FileSystemObject итп), но возможно потребуется специальная настройка разрешений. P.S. Если сохранения данных не требуется - только загрузка, то имеет смысл не париться, а хранить их в отдельном js файле в формате jsonp.) |
Спасибо! jsonp - очень даже подходящее решение!
Но по какой-то причине пример обработчика с этого сайта работает только в Firefox'e.. Есть ли способ чтения json файлов для IE? <script type="text/javascript" src="jquery-2.1.0.js"></script > <script > $(document).ready(function() { $.getJSON("name.js", function(data){ alert(data.name); }); }); </script > Пример отсюда, если запускать локально, тоже работает только в Firefoxe. В чём может быть дело? |
Вот всё мудрить норовят. Накой оно надо. Jsonp на деле это просто jasvascript файл.
<script> function callback(data){ //ваш скрипт } </script> <script src="jsonp-data.js"></script> Пример: jsonp-data.js
callback({ "name": "Zara Ali", "age" : "67", "sex": "female" }) И всё. $.getJSON - это тот же самый xmlhttp только в обёртке из jquery. |
Aetae, спасибо!
Вопрос исчерпан :-) |
Один вопрос исчерпан, другой возник. На этот раз проблема точно в корявости рук. :)
Есть вышеописанная конструкция. <script> function callback(data){ //ваш скрипт } </script> <script src="jsonp-data.js"></script> В теле функции callback данными из jsonp-data.js можно оперировать как угодно. Но вывести эти данные за пределы тела функции не получилось. А мне эти данные нужны в конструкции вроде $().ready(function() { }); Пробовал return'ом - по понятным причинам не работает. |
Судя по всему по js знаний у вас совсем не много. Вам главное чтоб работало так понимаю. Тогда в лоб:
<script> var d; function callback(data){ //ваш скрипт d = data; } </script> |
Знаний действительно не хватает.
По непонятным для меня причинам, алерт внутри функции срабатывает исправно, а внешний алерт нет. Хром пишет: "Uncaught TypeError: Cannot read property 'name' of undefined". var d; function callback(data){ d = data; alert(d.name+"1"); } alert(d.name); |
так веть данные то ещё загрузились для 6 строки и 1 строка заполнится когда загрузится <script src="jsonp-data.js"></script>
содержание тогда var d; function callback(data){ d = data; alert(d.name+"1"); } jsonp-data.js callback({ "name": "Zara Ali", "age" : "67", "sex": "female" }); alert(d.name); |
pers_tmb,
Внутри .ready всё будет, для того ready и используют. |
Часовой пояс GMT +3, время: 02:34. |