2010-06-08 2 views
0

Можно ли вызвать функцию класса php ПРЯМО С помощью ajax?Как вызвать функцию класса php непосредственно с помощью ajax?

Что-то вроде ниже ... кроме AJAX ...

myclass::myfunction(); 

Я использую библиотеку JQuery для работы с AJAX.

$.get('control.php', {func: funcName, arg1: arg1}); 

Вышеупомянутое похоже на то, что я пытаюсь достичь MINUS control.php;

Я не уверен, что это возможно, но я просто подумал, что было бы неплохо пропустить целевую страницу (control.php), которая получает funcName. У меня есть куча условных операторов, которые сортируют, какую функцию класса запускать на основе получаемого funcName.

Кажется, глупо это делать, чтобы иметь отдельную страницу для обработки вызовов функций.

Есть ли лучший способ?

ответ

5

No.

Если бы это было возможно, было бы зияющая дыра в безопасности.

+0

HRM, я не понимаю. Можете ли вы объяснить, почему ...? Приведите пример. Спасибо – payling

+0

@payling: Вы действительно хотите, чтобы страница javascript могла вызвать 'exec()' напрямую? Это пример, но есть много опасных функций (и некоторые из ваших функций, вероятно, небезопасны, чтобы их так называли). –

+0

@payling, если бы был способ вызвать метод _any_ прямо таким образом, можно просто (вручную) построить вызов, который будет выполнять именно это. Таким образом, любой (с разрешения или без разрешения) мог бы выполнить логику внутри этого метода (что, вероятно, не очень хорошая идея.) – kamasheto

0

Нет. Вы не можете напрямую вызвать метод таким образом.

Вы можете использовать маршрутизацию (например, технику, используемую в CodeIgniter и CakePHP), но это просто синтаксический сахар, который делает то же самое - контролирует ваши маршруты к действиям.

0

Невозможно по простой причине. Как должен AJAX знать, где найти функцию. Он должен иметь URL-адрес, чтобы найти функцию, чтобы она не работала без промежуточного файла php.

0

Нет соображений безопасности, но нет никаких причин, почему вы не можете сделать что-то вроде этого

function run($args){ 
    //do stuff 
} 

echo run($_REQUEST); 
//or 
echo run($REQUEST['name']); 
Смежные вопросы