2010-01-27 5 views
1

Я использую диалог JQuery, и из PHP я могу создать надстройку над кнопкой. Чтобы иметь возможность добавлять код со стороны сервера, я передаю метод по параметру. Проблема заключается в том, что FireBug говорит мне, что этот метод не определен:Функция передачи Javascript в параметр?

alt text http://clip2net.com/clip/m12122/1264557672-clip-8kb.png

okHandler является параметром этого метода вызова поднять диалог и содержать простое сообщение предупреждения на данный момент, спустя несколько вызовов Ajax , Любая идея, почему это не работает?

alt text http://clip2net.com/clip/m12122/1264557824-clip-6kb.png

+1

Можете ли вы предоставить более некоторый контекст? Где okHandler определено? – Joel

ответ

4

Похоже okHandler это строка, содержащая объявление функции, а не фактическая функция? У вас есть

okHandler = "function anonymous(){alert('This is a test');}"; 

вместо

okHandler = function(){alert('This is a test');}; 
0

As John Kugelman notes, okHandler, как представляется строкой. Она будет работать лучше, если бы это была функция ... Однако, если строка должна быть, то вам необходимо пройти через eval() на самом деле выполнить его:

eval("(" + okHandler + ")()") 
+0

+1 он работает с eval, но на самом деле я передавал строку со стороны сервера на клиентскую сторону. Я дал вам +1, но ответит на ответ. Спасибо Shog9 –

0

ли функция okHandler() нагруженный (как действительный объект JS - не String) в момент получения этой ошибки?

Я считаю, что нехорошо называть что-то вроде «if (foo! = Null)», если foo еще не было объявлено как переменная где-то. FireBug будет жаловаться: «okHandler не определен».

Попробуйте что-то вроде этого ...

var myHandlers = {}; 
// Load okHandler as a member of myHandlers when applicable here... 
$('#dialog'+idbox)... 
    "Oky": function() { 
     myHandlers.okHandler && myHandlers.okHandler(); 
     ... 
    } 
} 
Смежные вопросы