Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   передача массива с сервера (https://javascript.ru/forum/misc/1369-peredacha-massiva-s-servera.html)

subaru 02.07.2008 19:33

передача массива с сервера
 
задача: отобразить маркеры на 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],
....
)


и все равно не работает

Вопрос: Как определить переменную, чтобы в нее можно было присвоить код, передаваемый с сервера?

Илья Кантор 02.07.2008 19:55

outputLayer = {


Судя по этому куску кода - у тебя объект.

Вот так по нему не ходят
for (var i=0; i < outputLayer.length; i++)


А ходят так
for(var i in outputLayer) {
   if (!outputLayer.hasOwnProperty(i)) continue
...
}

Илья Кантор 02.07.2008 19:55

P.S. Если переменная отсутствует - значит, ты ее не завел =)

В XAJAX есть специальный вызов для запуска скриптов appendScript что ли..

Илья Кантор 02.07.2008 19:57

P.P.S. Может, попробовать затрейсить вызовом debugger ?


Часовой пояс GMT +3, время: 02:17.