2013-10-13 6 views
1

Привет, я хотел бы спросить: есть ли способ вызова функции, которая была возвращена в json-объекте с параметрами? Например, у меня есть Аякс, когда успех я вернуть объект JSON в этом объекте я получил {"callback":{"func":"doAlert","param":"param1"}} иОбратный вызов Javascript после ajax

sucsess:function(data){ 
data.callback.func(data.callback.param); 
} 

У меня есть

var doAlert=function(param){ 
alert(param); 
} 

И я понимаю, что моя функция не определена.

+0

Попробуйте 'JSON.parse (data);' в параметре 'success:' JQuery Ajax. И какой ответ вы можете предупредить или занести в журнал. –

+0

Спасибо за быстрый комментарий, снова это сообщение TypeError: data.callback.func не является функцией – Alex

+0

Можете ли вы предупредить данные (ответ Ajax Request) или зарегистрировать его, чтобы узнать, что это на самом деле? –

ответ

1

Не используйте eval. Просто сделайте

window[data.callback.func](data.callback.param); 
+1

+1. То же, что я сказал в своем комментарии. –

-1

Да. Вы должны использовать Eval для вычисляет выражение:

eval(data.callback.func)(data.callback.param); 
+0

'eval' злой, и вы, безусловно, не имеете * использовать его. –

+0

, но это ответ на его вопрос. так зачем голосовать? Возможно, это не лучший ответ, и он не согласится. но это не ошибается proffesor. – Dvir

+0

Потому что это не очень хороший ответ. Если «eval» можно избежать, его следует избегать. И «нужно» просто неправильно. –

-1

Вам нужно будет использовать EVAL, чтобы преобразовать имя функции в формате JSON из строки функционировать

var funcevaluated=eval(data.callback.func); 
funcevaluated(data.callback.param); 

Рабочий пример JSFiddle:

http://jsfiddle.net/ghjZu/

+0

Нет, вам не нужно * использовать 'eval'. –

Смежные вопросы