У меня есть php-файл func.php
где я определил многие функции, скажем:
<? php function func1($data){ return $data+1; } ?>
Я хочу вызвать function func1
с помощью ajax . спасибо за помощь
Вы не можете вызвать функцию PHP непосредственно из вызова AJAX, но вы можете сделать это:
PHP:
<? php function func1($data){ return $data+1; } if (isset($_POST['callFunc1'])) { echo func1($_POST['callFunc1']); } ?>
JS:
$.ajax({ url: 'myFunctions.php', type: 'post', data: { "callFunc1": "1"}, success: function(response) { alert(response); } });
Вы должны вызвать свой php-скрипт через запрос ajax, используя jquery, например:
Javascript:
$.ajax({ url: "script.php", data: { param1: "value1", param2: "value2" }, type: "GET", context: document.body }).done(function() { // your code goes here });
Вы можете указать свои параметры через свойство данных объекта ajax.
Php
// you can do isset check before $param1 = $_GET['param1']; $param2 = $_GET['param2']; // validate // sanitize // save to db // blah blah // do something with params
Более подробную информацию вы можете получить из описания функции jQiery.ajax () из http://api.jquery.com/jQuery.ajax/
Это немного сложнее, но я постараюсь свести его к основам.
Вам потребуется какой-то интерфейс (соглашение, в основном) между вызывающим и вашим скриптом. Основные проблемы здесь:
То, как ваш скрипт понимает, что нужно назвать и с какими аргументами. Предположим, вы решили использовать GET
запрос для вызова функции. Имя функции может быть в поле func
и аргументах в args
one, как строка, разделенная символом ;
, Другими словами, вызов funcFoo(5,'bar')
будет выполняться путем запроса func.php?func=func1&args=5;bar
.
Способ, которым вызывающий абонент получает (и понимает) возвращаемое значение. Поскольку ваши требования ориентированы на js, подход JSON будет очень уместным.
Добавьте следующий код вместе со своими функциями:
if(isset($_GET['func'])) { $func=$_GET['func']; if(function_exists($func)) { $args=(isset($_GET['args'])?explode(';',$_GET['args']):array()); $result=call_user_func_array($func,$args); } else $result=array('error'=>"Unknown Function $func!"); } else $result=array('error'=>"No function name provided!"); echo json_encode($result);
Однако ваши функции также должны быть изменены в соответствии с новыми требованиями. Поскольку нет способа сообщить, сколько аргументов будет подано вызывающим, функция должна быть сконструирована так, чтобы не принимать никаких обязательных аргументов и проверять сами поставляемые. Кроме того, он должен всегда возвращать массив, чтобы быть json_encode
d, прежде чем он будет возвращен вызывающему.
Например, ваша примерная функция должна выглядеть примерно так:
function func1(){ $data=func_get_args(); if(count($data)) // at least one -- rest will be ignored return $data[0]+1; else return array('error'=>__FUNCTION__."() expects an argument!"); }
Имейте в виду : это всего лишь скелет, который поможет вам начать всю концепцию. Необходимо уделять больше внимания как отказоустойчивости, так и безопасности . Но это тема другой темы.