Intereting Posts
Отправка файла на диск Google Zend Framework: как получить мои статусы из твиттера Javascript code: динамическое изменение валют с выпадающим списком HTML Zend Regex Route> Отслеживать версию api Как получить идентификатор выбранного элемента таблицы в php PHP: анализ разделенных запятыми значений между квадратными скобками в многомерном массиве Неявные объединения и Где в Доктрине – как? Как перенаправить администратора после добавления администратора? скрипт для перезаписи .htaccess файл работает на wamp, но не на общем хосте в сети извлечение URL-адресов с страницы с регулярным выражением Получают ли комментарии php время сервера? Как сгенерировать следующий номер автоматического увеличения в mysql, используя php? Php с NetBeans: применение нового PhpDoc без фактического объявления Cогласование страницы и параметры получения Разбор медиа RSS с помощью XMLReader

Вызов определенной функции из PHP с помощью Jquery & Ajax

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

Теперь, если у меня есть одна функция, я могу это сделать, но когда у меня есть 2 или более, я начинаю застревать. Полагаю, я мог бы это сделать, когда у меня есть 2 функции, но как только больше переменных играют в игру или больше функций, я просто делаю массовые заявления if на моем php?

Проблема в том, что, когда я прикрепляю к нему базу данных, мне нужно будет рассмотреть все исходные данные, которые могут произойти. Как указать конкретную функцию php при использовании jquery & ajax?

//function.php <?php function firstFunction($name) { echo "Hello - this is the first function"; } function secondFunction($name) { echo "Now I am calling the second function"; } ?> <?php $var = $_POST['name']; if(isset($var)) { $getData = firstFunction($var); } else if(isset($var)) { $getData = secondFunction($var); } else { echo "No Result"; } ?> //index.html <div id="calling">This text is going to change></div> <script> $(document).ready(function() { $('#calling').load(function() { $.ajax({ cache: false, type: "POST", url: "function.php", data: 'name=myname' success: function(msg) { $('#calling').html((msg)); } }); // Ajax Call }); //event handler }); //document.ready </script> 

Related of "Вызов определенной функции из PHP с помощью Jquery & Ajax"

Вам нужно передать параметр, либо через объект данных, либо через переменную GET в URL. Или:

 url: "function.php?action=functionname" 

или:

 data: { name: 'myname', action: 'functionname' } 

Затем в PHP вы можете получить доступ к этому атрибуту и ​​обработать его:

 if(isset($_POST['action']) && function_exists($_POST['action'])) { $action = $_POST['action']; $var = isset($_POST['name']) ? $_POST['name'] : null; $getData = $action($var); // do whatever with the result } 

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

 switch($action) { case 'functionOne': case 'functionTwo': case 'thirdOKFunction': break; default: die('Access denied for this function!'); } 

Пример реализации:

 // PHP: function foo($arg1) { return $arg1 . '123'; } // ... echo $action($var); // jQuery: data: { name: 'bar', action: 'foo' }, success: function(res) { console.log(res); // bar123 } 

Вы на самом деле очень близки к тому, чего вы хотите достичь.

Если вы хотите указать, какая функция будет вызываться в PHP, вы можете передать переменную, чтобы сообщить PHP. Например, вы передали request=save в AJAX, вы можете написать PHP следующим образом:

 $request = ''; switch(trim($_POST['request'])) { case 'save': $player_name = (isset($_POST['playername']) ? trim($_POST['player_name']) : 'No Name')); saveFunction($player_name); break; case 'load': loadFunction(); break; default: // unknown / missing request } 

EDIT: вы можете даже пройти вместе с другими параметрами

Это может быть не совсем то, что вы ищете, но это может помочь некоторым другим найти очень простое решение.

В вашем jquery объявите переменную и отправьте ее

 var count_id = "count"; data: { count_id: count_id }, 

Затем в вашем php проверьте, установлена ​​ли эта переменная

 if(isset($_POST['count_id'])) { Your function here }