Javascript передача функции в параметр? - PullRequest
1 голос
/ 27 января 2010

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

alt text

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

alt text

Ответы [ 3 ]

4 голосов
/ 27 января 2010

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

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

вместо

okHandler = function(){alert('This is a test');};
0 голосов
/ 27 января 2010

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

Я считаю, что неправильно называть что-то вроде "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();
        ...
    }
}
0 голосов
/ 27 января 2010

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

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