Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Метод как callback 
V
    Опции темы
solenko
Дата 19.11.2007, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 9
Всего: 67



Есть сторонний сайт, ктороый отдает данные в JSON виде. При этом url вызова имеет формат:
~http://some_site.com/getJSON.php?param_name=param_value&callback=function_name
function_name -- имя функции, в которую будет передан ответ.
Ответ возвращается в виде скрипта, т.е.:
~http://some_site.com/getJSON.php?param_name=param_value&callback=foo_function
вернет
Код

foo_function({response_data});

Мне нужно, чтобы callback вызывался в контексте моего объекта, т.е., фактически, вызвать метод объекта. Вот, никак не могу сообразить как это сделать. Единственное что лезет в голову -- создание глобального хеша объектов и вызов посредством его, т.е.
Код

function Foo(){
  this.hash = Math.random();
  window.foo_objects[this.hash] = this;
}

Foo.prototype.foo_function = function() {

}

Foo.prototype.do_request = function() {
  var scr = document.createElement('script');
  scr.src = 'http://some_site.com/getJSON.php?param_name=param_value&callback=foo_objects[' + this.hash + '].foo_function';
  document.appendChild(scr);
}


Скажите, есть ли более простой/правильный путь?

Это сообщение отредактировал(а) solenko - 19.11.2007, 15:31


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
SelenIT
Дата 19.11.2007, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



Что-то вроде foo_function.call(объект, {response_data}) ?

Это сообщение отредактировал(а) SelenIT - 19.11.2007, 15:26


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
solenko
Дата 19.11.2007, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 9
Всего: 67



Не подойдет, т.к. вызываю эту функцию не я, а сторонний скрипт.
Скрипт фактически берет параметр callback, дописывает к нему строку "({response_data})" и это возвращает в теле ответа.


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
vasac
Дата 19.11.2007, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 13
Всего: 36



Код

function construct()
{
    var self = this;
    this.method = (function() {alert(self);});
}
var obj = new construct();
var func = obj.method;
func(); // Функция всегда будет вызываться в "контексте" объекта.

PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0440 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.