Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Массив, создание и заполнение

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
tato
Отправлено: 30 Ноября, 2012 - 02:37:14
Post Id



Посетитель


Покинул форум
Сообщений всего: 468
Дата рег-ции: Сент. 2011  
Откуда: Владивосток


Помог: 8 раз(а)




Всем доброго!

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var data = [];
  3.  
  4. $.getJSON( 'http://site.com?callback=?', function( response ){
  5.     $.each( response, function( index, res_data ){
  6.         data.push( { 'var1': res_data.var1, 'var2': res_data': var2 } );
  7.    } );
  8. } );
  9.  
  10. // тут много кода, вообщем используется массив data
  11.  
  12.  


Собсно так не работает, !НО работает так:

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var data = [ { 'var1':'test', 'var2':'test'} ];
  3. ....
  4.  


Вопрос, почему если при объявлении массива с каким-нибудь параметром
работает, а если объявляю путой, то нет.


-----
просто ?: сложно
 
 Top
EuGen Администратор
Отправлено: 30 Ноября, 2012 - 08:01:07
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Потому что в javascript нет ассоциативных массивов. Вместо этого можно использовать объекты, свойства которых будут эмулировать ключи массива. Что, собственно, Вы и делаете во втором примере.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
tato
Отправлено: 01 Декабря, 2012 - 02:39:56
Post Id



Посетитель


Покинул форум
Сообщений всего: 468
Дата рег-ции: Сент. 2011  
Откуда: Владивосток


Помог: 8 раз(а)




EuGen, Знаю что нет ассоциативных.

Переформулирую вопрос:
Почему если Я пушу объекты в пустой массив он так и остается пустым, а если в массиве уже есть значение, то все пушится как надо?


-----
просто ?: сложно
 
 Top
esterio
Отправлено: 01 Декабря, 2012 - 11:12:47
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




var data = [];
data.push( { 'var1': res_data.var1, 'var2': res_data': var2 } );

data сначала не обявлен массивом, и у него нету метода push
 
 Top
tato
Отправлено: 01 Декабря, 2012 - 15:36:31
Post Id



Посетитель


Покинул форум
Сообщений всего: 468
Дата рег-ции: Сент. 2011  
Откуда: Владивосток


Помог: 8 раз(а)




esterio, хорошо. Почему и так не работает?

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var data = new Array();
  3.  
  4. data.push( { 'var1': res_data.var1, 'var2': res_data': var2 } );
  5.  


И как зделать так, что бы работало?


-----
просто ?: сложно
 
 Top
armancho7777777 Супермодератор
Отправлено: 01 Декабря, 2012 - 16:00:18
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Можно узнать, что Вы пытаетесь сделать ?
tato пишет:
'var2': res_data': var2
 
 Top
EuGen Администратор
Отправлено: 01 Декабря, 2012 - 16:02:03
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




tato пишет:
data.push( { 'var1': res_data.var1, 'var2': res_data': var2 } );

- очевидно, исправить ошибку в синтаксисе, указав
CODE (javascript):
скопировать код в буфер обмена
  1. data.push( { 'var1': res_data.var1, 'var2': res_data.var2 } );


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
armancho7777777 Супермодератор
Отправлено: 01 Декабря, 2012 - 16:04:47
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




tato, разве редактор Вам не подсвечивает ?
(Добавление)

EuGen, я надеялся, что он сам поймёт ))
 
 Top
tato
Отправлено: 02 Декабря, 2012 - 23:36:12
Post Id



Посетитель


Покинул форум
Сообщений всего: 468
Дата рег-ции: Сент. 2011  
Откуда: Владивосток


Помог: 8 раз(а)




Редактор не подсвечивает т.к. код здесь писал для примера (=
не внимательно посмотрел.

Вообщем, вот полный рабочий код:

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $(function(){
  3.         var data = [{'title':'live.podryad.tv','snapshot':'http://live.podryad.tv/i/logo.jpg'}];
  4.  
  5.         $.getJSON(
  6.                 'http://tlist.podryad.lan/list?cb=?',
  7.                 function(response){
  8.                     $.each( response, function( cam_name, cam_data ){
  9.                         data.push({
  10.                            'snapshot': cam_data.snapshot,
  11.                            'title': cam_data.title
  12.                         });
  13.                     });
  14.                 }
  15.         );
  16.  
  17. $.slideshow({
  18.       data: data,
  19.       defaultSlideDur: 5,
  20.       defaultTransition: $.fade(),
  21.       repeatDur: 'indefinite',          
  22.       renderToSVG: function( index ) {
  23.         return $.g().add([
  24.             $.media( {href: this.snapshot, width: '640', height: '360' } ),
  25.             $.fitTextArea( { top: '360', height: '50', width: '640', fontSize: 'max', fill: '#00a400'
  26.                              frame: { backColor:'white', backOpacity: 0.8 }
  27.                            }
  28.                          ).text( this.title )
  29.         ]);
  30.       }
  31.    }).addTo('svg');
  32. });
  33.  


Конкретно в это месте:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var data = [{'title':'live.podryad.tv','snapshot':'http://live.podryad.tv/i/logo.jpg'}];
  3.  


если зделать так:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var data = [];
  3.  


то не работает, почему?


-----
просто ?: сложно
 
 Top
tato
Отправлено: 07 Декабря, 2012 - 07:51:06
Post Id



Посетитель


Покинул форум
Сообщений всего: 468
Дата рег-ции: Сент. 2011  
Откуда: Владивосток


Помог: 8 раз(а)




После разнообразных тестов выяснил.
Массив на момент когда он нужен не успевал заполняться.


-----
просто ?: сложно
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB