Это может быть простым ответом, но я использую $ jQuery .ajax для вызова Сценария PHP. То, что я хочу сделать, в основном помещается, что Сценарий PHP в функции и вызывает функцию PHP из JavaScript.
<?php
if(isset($_POST['something'] {
//do something
}
?>
к этому
<?php
function test() {
if(isset($_POST['something'] {
//do something.
}
}
?>
Как я вызвал бы ту функцию в JavaScript? Прямо сейчас я просто использую $ .ajax с перечисленным файлом PHP.
Используйте $. Ajax
, чтобы вызвать контекст сервера (или URL-адрес, или что-то еще) для вызова определенного «действия». Вам нужно что-то вроде:
$.ajax({ url: '/my/site',
data: {action: 'test'},
type: 'post',
success: function(output) {
alert(output);
}
});
На стороне сервера параметр action
POST должен быть прочитан, и соответствующее значение должно указывать на вызываемый метод, например:
if(isset($_POST['action']) && !empty($_POST['action'])) {
$action = $_POST['action'];
switch($action) {
case 'test' : test();break;
case 'blah' : blah();break;
// ...etc...
}
}
Я считаю, что это простой воплощение паттерна Command .
Я бы придерживался обычного подхода для прямого вызова файла, но если вы действительно хотите вызвать функцию, посмотрите JSON-RPC (Вызов удаленной процедуры JSON).
По сути, вы отправляете на сервер строку JSON в определенном формате, например
{ "method": "echo", "params": ["Hello JSON-RPC"], "id": 1}
, который включает функцию для вызова и параметры этой функции.
Конечно, сервер должен знать, как обрабатывать такие запросы.
Вот плагин jQuery для JSON-RPC и, например, Zend JSON Server как реализация сервера на PHP.
Это может быть излишним для небольшого проекта или меньшего количества функций. Самый простой способ - это ответ Карима . С другой стороны, JSON-RPC - это стандарт.
Функцию PHP нельзя вызвать с помощью Javascript, так же как и произвольные функции PHP при загрузке страницы (подумайте о последствиях для безопасности).
Если вы должны обернуть свой кодекс в функцию по любой причине, почему не делают вас, любой подверг вызов функции определению функции, например:
function test() {
// function code
}
test();
Или, используйте PHP, включайте:
include 'functions.php'; // functions.php has the test function
test();
Вам нужно будет выставить конечную точку (URL) в вашей системе, которая будет принимать POST запрос от ajax вызова в jQuery.
Затем, при обработке этого URL из PHP, вы вызовете свою функцию и вернете результат в соответствующем формате (скорее всего, JSON, или XML, если хотите).