Не доступен объект из вне. JS

Программирование, которое не связано с API и Flash.

Не доступен объект из вне. JS

Сообщение manticore » 16 июн 2013, 12:40

Написал вот такой код:

  1. $.post('php/results.php', {viewer_id: flashVars['viewer_id'],
  2.                                    auth_key: flashVars['auth_key'], operation: 'getWinners'}, function(data) {
  3.  
  4.                 ...
  5.  
  6.                 var data = $.parseJSON(data);
  7.  
  8.                 ... // Вот здесь доступен объект data с данными
  9.  
  10.                 for(var i = 0; i < data.response.length; i++) {
  11.  
  12.                     ... // Здесь тоже все еще доступен, в принципе так и должно быть
  13.  
  14.                     VK.api('users.get', {uids: uids, fields: 'photo_50'}, function(vked) {
  15.  
  16.                         ... // Вот здесь уже этот объект пропадает, почему? разве функция внутри, не может использовать объекты выше?
  17.  
  18.                         for(var j = 1; j < 5; j++) {
  19.  
  20.                             ... // Объект так-же не доступен, доступен только объект vked, который принимает эта внутренняя функция
  21.  
  22.                         }
  23.  
  24.                     });
  25.  
  26.                 }
  27.  
  28.             });


В коде все отметил, лишние строки кода удалил и описал, что не работает. Вопрос: Почему пропадает объект data внутри функции без имени с параметром vked.
Помогите, пожалуйста, или посоветуйте, как подключить получше, чтобы 2 объекта были видны.
Аватара пользователя
manticore

 
Автор темы
Сообщения: 119
Зарегистрирован: 08 дек 2012, 18:53
Откуда: Москва
Благодарил (а): 17 раз.
Поблагодарили: 9 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



Re: Не доступен объект из вне. JS

Сообщение Serge » 16 июн 2013, 13:11

Потому что яваскрипт.
Объявите объект (просто var data;) вне всякий функций (в контексте window)
http://sevenlines.com.ua - разработка и продвижение сайтов
Serge
WEB Team
WEB Team
 
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55
Благодарил (а): 2 раз.
Поблагодарили: 65 раз.

Re: Не доступен объект из вне. JS

Сообщение manticore » 16 июн 2013, 13:40

Объявил, консоль говорит: (выше, у меня код для чата, с похожей конструкцией, так там data видно в безымянной функции, которая внутри этой функции)

  1. Uncaught TypeError: Cannot read property 'number' of undefined


Хотя JSON ответ, содержит значение number, пытаюсь получить так:



Ответ приходит такой:

  1. {"response":[{"...","number":"102"},{"..."number":"101"}]}
  2.  


Почему же он говорит, что не может прочитать значение number?
Аватара пользователя
manticore

 
Автор темы
Сообщения: 119
Зарегистрирован: 08 дек 2012, 18:53
Откуда: Москва
Благодарил (а): 17 раз.
Поблагодарили: 9 раз.

Re: Не доступен объект из вне. JS

Сообщение Serge » 16 июн 2013, 20:28

А можете ссылку кинуть, где это происходит? Посмотреть.
Я у себя делал так (работало):


  1. var ololo;
  2. var some_f = function(){...};
  3. $(document).ready(function()  //сейчас использую $(window).load. Так и не понял, в чем разница, но так "стабильней"
  4. //здесь вызываю функции или обрабатываю переменные
  5. });
http://sevenlines.com.ua - разработка и продвижение сайтов

За это сообщение автора Serge поблагодарил:
manticore
Serge
WEB Team
WEB Team
 
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55
Благодарил (а): 2 раз.
Поблагодарили: 65 раз.

Re: Не доступен объект из вне. JS

Сообщение IndieGD » 16 июн 2013, 21:39

manticore, потому что вы вызываете асинхронный метод VK.api('users.get') в цикле, и к моменту когда от ВК пришел первый ответ цикл уже отработал, а переменная i равна длине массива data.response. Следовательно вызов data.response[i] будет с выходом за пределы массива.

За это сообщение автора IndieGD поблагодарил:
manticore
IndieGD

 
Сообщения: 124
Зарегистрирован: 28 май 2013, 19:20
Благодарил (а): 1 раз.
Поблагодарили: 34 раз.

Re: Не доступен объект из вне. JS

Сообщение manticore » 16 июн 2013, 23:08

IndieGD
Т.е VK.api('users.get') за цикл? (Это работает, но проблема в том, что я не получу список ID только в цикле, так как там не одни значения, как с этим то быть?)
Аватара пользователя
manticore

 
Автор темы
Сообщения: 119
Зарегистрирован: 08 дек 2012, 18:53
Откуда: Москва
Благодарил (а): 17 раз.
Поблагодарили: 9 раз.

Re: Не доступен объект из вне. JS

Сообщение IndieGD » 16 июн 2013, 23:20

manticore, ну вроде того. По вашему коду непонятно зачем там вообще цикл, знал бы подсказал как без него обойтись.
IndieGD

 
Сообщения: 124
Зарегистрирован: 28 май 2013, 19:20
Благодарил (а): 1 раз.
Поблагодарили: 34 раз.

Re: Не доступен объект из вне. JS

Сообщение manticore » 16 июн 2013, 23:21

Там приходит ответ в виде массива выигрышей, в каждом массиве данные о выигрыше, в том числе и ID пользователей, чтобы получить из каждого выигрыша ID пользователей, необходимо пройтись по ним циклом, а вынося запрос VK за цикл, я не смогу запрашивать каждый раз о нужных пользователях данные от VK.
Аватара пользователя
manticore

 
Автор темы
Сообщения: 119
Зарегистрирован: 08 дек 2012, 18:53
Откуда: Москва
Благодарил (а): 17 раз.
Поблагодарили: 9 раз.

Re: Не доступен объект из вне. JS

Сообщение IndieGD » 16 июн 2013, 23:23

ID пользователей в списке уникальны или один и тот же юзер может встречаться в нескольких местах массива?
IndieGD

 
Сообщения: 124
Зарегистрирован: 28 май 2013, 19:20
Благодарил (а): 1 раз.
Поблагодарили: 34 раз.

Re: Не доступен объект из вне. JS

Сообщение manticore » 16 июн 2013, 23:28

Может встречаться иногда.
Аватара пользователя
manticore

 
Автор темы
Сообщения: 119
Зарегистрирован: 08 дек 2012, 18:53
Откуда: Москва
Благодарил (а): 17 раз.
Поблагодарили: 9 раз.

След.

Вернуться в Программирование на PHP и других языках (без использования API)



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron