Вне моей головы, есть пара подходов, которые я могу придумать.eval () возможен, но обычно считается чем-то, что следует избегать, учитывая риск запуска произвольного JS-кода (в конечном итоге это зависит от того, кто предоставляет строку, которую уклоняют).
Я бы рекомендовал следующий подход:
Создайте свои функции как объявления для базового объекта JS.
var Callbacks = {
callback1: function(){ },
callback2: function(){ }
};
Затем используйте строку, возвращенную из вашего вызова AJAX, в качестве индексатора свойств в свой объект Callbacks.Я не знаком с запросами YUI AJAX, но, надеюсь, вы поняли:
var p_callback = function(){
var local_callback = // parse response, get the callback method you want by name/string
Callbacks[local_callback](); // providing arguments as needed, of course
};
YAHOO.util.Connect.asyncRequest('GET', p_parms, p_callback);
Используя методы доступа к свойствам для вашего объекта, вы уверены, что вы выполняете только свой собственный код обратного вызова вместо произвольного JavaScriptкоторые могли быть включены в ответ.