передача массива с сервера
задача: отобразить маркеры на GoogleMaps
как решается: используем xajax, который с сервера передает данные:
outputLayer = {
"zoom": [0, 17],
"places": [
{"name": " mail.ru ",
"icon": ["chopper_helmet", "chopper_helmet_shadow"],
"posn": [55.62609, 38.00091 ],
"html": "<table width=\'250\'> <tr><td> <img src=\'/upload/user_avatars/noimage_x48_y48_b1
.jpg\'> </td> <td align=\"left\"> <strong>calfer</strong></span><br />Kawasaki ZX-6RR 2005<br />
<a href=\"http://motofriends.ru/users/profile/userid/807/\" target=\'_blank\'>смотреть профиль</a>
</td> </tr></table>"
},
Далее, в JS-коде мы используем переданную переменную outputLayer:
for (var i=0; i < outputLayer.length; i++)
{
var layer = outputLayer[i];
var markers = [];
....
var marker = createMarker(posn,title,place["html"] ,icon);
}
...
Проблема: не работает в IE6 ( 7 не тестил еще) Работает в Firefox Как ругается IE: outputLayer - определение отсутствует. Определения как такового нет, т.к. это передается с сервера как переменная. пробовал прописать в js как: var outputLayer = ' ' ; все равно не работает. Еще думал загнать данные в <input type="hidden" name="" value="" > а потом по
var outputLayer = document.getElementById('outputLayer');
alert(outputLayer.value);
выводит полученные данные ( outputLayer = { "zoom": [0, 17], .... ) и все равно не работает Вопрос: Как определить переменную, чтобы в нее можно было присвоить код, передаваемый с сервера? |
outputLayer = {
Судя по этому куску кода - у тебя объект. Вот так по нему не ходят for (var i=0; i < outputLayer.length; i++) А ходят так
for(var i in outputLayer) {
if (!outputLayer.hasOwnProperty(i)) continue
...
}
|
P.S. Если переменная отсутствует - значит, ты ее не завел =)
В XAJAX есть специальный вызов для запуска скриптов appendScript что ли.. |
P.P.S. Может, попробовать затрейсить вызовом debugger ?
|
| Часовой пояс GMT +3, время: 16:31. |