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

Программирование, которое не связано с API.
Аватара пользователя
manticore
Сообщения: 119
Зарегистрирован: 08 дек 2012, 18:53

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

Сообщение manticore »

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

Код: Выделить всё

$.post('php/results.php', {viewer_id: flashVars['viewer_id'],                                    auth_key: flashVars['auth_key'], operation: 'getWinners'}, function(data) {                 ...                 var data = $.parseJSON(data);                 ... // [b]Вот здесь доступен объект data с данными[/b]                 for(var i = 0; i < data.response.length; i++) {                     ... // [b]Здесь тоже все еще доступен, в принципе так и должно быть[/b]                     VK.api('users.get', {uids: uids, fields: 'photo_50'}, function(vked) {                         ... // [b]Вот здесь уже этот объект пропадает, почему? разве функция внутри, не может использовать объекты выше?[/b]                         for(var j = 1; j < 5; j++) {                             ... // [b]Объект так-же не доступен, доступен только объект vked, который принимает эта внутренняя функция[/b]                         }                     });                 }             });
В коде все отметил, лишние строки кода удалил и описал, что не работает. Вопрос: Почему пропадает объект data внутри функции без имени с параметром vked.
Помогите, пожалуйста, или посоветуйте, как подключить получше, чтобы 2 объекта были видны.
Serge
WEB Team
WEB Team
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55

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

Сообщение Serge »

Потому что яваскрипт.
Объявите объект (просто var data;) вне всякий функций (в контексте window)
Аватара пользователя
manticore
Сообщения: 119
Зарегистрирован: 08 дек 2012, 18:53

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

Сообщение manticore »

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

Код: Выделить всё

Uncaught TypeError: Cannot read property 'number' of undefined 
Хотя JSON ответ, содержит значение number, пытаюсь получить так:

Код: Выделить всё

data.response[i].number
Ответ приходит такой:

Код: Выделить всё

{"response":[{"...","number":"102"},{"..."number":"101"}]} 
Почему же он говорит, что не может прочитать значение number?
Serge
WEB Team
WEB Team
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55

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

Сообщение Serge »

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

Код: Выделить всё

var ololo;var some_f = function(){...};$(document).ready(function()  //сейчас использую $(window).load. Так и не понял, в чем разница, но так "стабильней"//здесь вызываю функции или обрабатываю переменные});
IndieGD
Сообщения: 124
Зарегистрирован: 28 май 2013, 19:20

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

Сообщение IndieGD »

manticore, потому что вы вызываете асинхронный метод VK.api('users.get') в цикле, и к моменту когда от ВК пришел первый ответ цикл уже отработал, а переменная i равна длине массива data.response. Следовательно вызов data.response будет с выходом за пределы массива.
Аватара пользователя
manticore
Сообщения: 119
Зарегистрирован: 08 дек 2012, 18:53

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

Сообщение manticore »

IndieGD
Т.е VK.api('users.get') за цикл? (Это работает, но проблема в том, что я не получу список ID только в цикле, так как там не одни значения, как с этим то быть?)
IndieGD
Сообщения: 124
Зарегистрирован: 28 май 2013, 19:20

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

Сообщение IndieGD »

manticore, ну вроде того. По вашему коду непонятно зачем там вообще цикл, знал бы подсказал как без него обойтись.
Аватара пользователя
manticore
Сообщения: 119
Зарегистрирован: 08 дек 2012, 18:53

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

Сообщение manticore »

Там приходит ответ в виде массива выигрышей, в каждом массиве данные о выигрыше, в том числе и ID пользователей, чтобы получить из каждого выигрыша ID пользователей, необходимо пройтись по ним циклом, а вынося запрос VK за цикл, я не смогу запрашивать каждый раз о нужных пользователях данные от VK.
IndieGD
Сообщения: 124
Зарегистрирован: 28 май 2013, 19:20

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

Сообщение IndieGD »

ID пользователей в списке уникальны или один и тот же юзер может встречаться в нескольких местах массива?
Аватара пользователя
manticore
Сообщения: 119
Зарегистрирован: 08 дек 2012, 18:53

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

Сообщение manticore »

Может встречаться иногда.
Ответить