Может ли JavaScript вызвать функцию PHP напрямую или мне нужен отдельный php-файл для вызова функции? - PullRequest
2 голосов
/ 06 декабря 2010

Я делаю некоторые базовые вещи Ajax (не jquery ... просто изучаю основы), и у меня настроена общая структура, где html вызывает функцию javascript, которая отправляет данные и запускает определенную страницу php.

Но что, если мне просто нужно запустить функцию php, которая уже определена в functions.php.Это возможно вообще?Я устал от создания новых файлов php для каждой задачи;)

Ответы [ 3 ]

10 голосов
/ 06 декабря 2010

Вы можете определить класс в php для обработки таких вещей, как:

functions.php:

class MyFunctions {
   function foo() {
      // code here
      // if you need to pass in some parameters, you can do it via jQuery and fetch the data like so (for the jQuery, see below)
      if($_GET['name'] == "john") { } // do stuff
   }

   function bar() {
      // code here
   }

   static function handleFn($fName) {
      if(method_exists(__CLASS__, $fname)) {
         echo $this->{$fname}(); die; // since AJAX, just echo the output and stop executing
      }
   }
}

if(!empty($_GET['f'])) {
   MyFunctions::handleFn($_GET['f']);
}

Затем выполните ваш вызов ajax следующим образом (при условии, что jQuery):

$.get("/functions.php?f=func_name_to_call", {name: "John", hobby: "Programming"}, function(data) {
});
2 голосов
/ 06 декабря 2010

В PHP-сценарии окружают каждую функцию оператором if, предназначенным для проверки переменной GET.Затем в JS отправьте переменную GET, специфичную для той, которая требуется для вызова этой функции.

0 голосов
/ 06 декабря 2010

ajax также является http-запросом, который не может напрямую вызывать функции php

...