Чтение 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, время: 05:54. |