Как вызвать функцию, имя которой передается в объекте Json? - PullRequest
4 голосов
/ 04 июня 2009

У меня есть объект JSON с ключевым элементом, называемым обратным вызовом.

{
"id":34,
"description":"",
"item_id":4,
"callback":"addNew",
"filename":"0000072.doc",
"type":"News",
"ext":"doc",
"size":46592
}

Я хотел бы вызвать функцию addNew javascript. Я старался.

json.callback(json);

но не работает. Есть идеи?

Ответы [ 3 ]

12 голосов
/ 04 июня 2009

Предполагая, что это глобальная функция (не должно быть):

window[json.callback](json);

Если ваш код хорошо структурирован, у вас, вероятно, будет объект, содержащий все функции, которые может вызвать JSON.

var myObject = {
  func1: function myObject_func1_method(foo) {
    return 1;
  },
  func2: function myObject_func2_method(foo) {
    return 2;
  }
}

Тогда вы можете:

myObject[json.callback](json);
9 голосов
/ 04 июня 2009

Не используйте eval, используйте

window[json.callback](json); 

Если функция находится в глобальной области видимости. В противном случае используйте область вместо окна.

0 голосов
/ 04 июня 2009

Использование eval(json.callback+'()');

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...