Esta pode ser uma resposta simples, mas estou usando $ .ajax do jQuery para chamar um script PHP. O que eu quero fazer é basicamente colocar esse script PHP dentro de uma função e chamar a função PHP do javascript.
<?php
if(isset($_POST['something'] {
//do something
}
?>
para isso
<?php
function test() {
if(isset($_POST['something'] {
//do something.
}
}
?>
Como eu chamaria essa função em javascript? No momento, estou usando apenas $ .ajax com o arquivo PHP listado.
Respostas:
Use
$.ajax
para chamar um contexto de servidor (ou URL, ou qualquer outro) para invocar uma 'ação' particular. O que você quer é algo como:No lado do servidor, o
action
parâmetro POST deve ser lido e o valor correspondente deve apontar para o método a ser invocado, por exemplo:Acredito que seja uma encarnação simples do padrão Command .
fonte
Desenvolvi um plugin jQuery que permite chamar qualquer função PHP central ou até funções PHP definidas pelo usuário como métodos do plugin: jquery.php
Depois de incluir jquery e jquery.php no cabeçalho de nosso documento e colocar request_handler.php em nosso servidor, começaríamos a usar o plugin da maneira descrita abaixo.
Para facilitar o uso, consulte a função de maneira simples:
Em seguida, inicialize o plug-in:
E agora alguns cenários de uso:
Demonstrando o encadeamento de funções PHP:
Demonstrando o envio de um bloco JSON de pseudocódigo PHP:
A configuração de back-end fornece uma lista de permissões para que você possa restringir quais funções podem ser chamadas. Existem alguns outros padrões para trabalhar com PHP descritos pelo plugin também.
fonte
Eu continuaria com a abordagem normal para chamar o arquivo diretamente, mas se você realmente quiser chamar uma função, dê uma olhada em JSON-RPC (JSON Remote Procedure Call).
Você basicamente envia uma string JSON em um formato específico para o servidor, por exemplo
que inclui a função a ser chamada e os parâmetros dessa função.
É claro que o servidor precisa saber como lidar com essas solicitações.
Aqui está o plugin jQuery para JSON-RPC e, por exemplo, o Zend JSON Server como implementação de servidor em PHP.
Isso pode ser um exagero para um projeto pequeno ou menos funções. A maneira mais fácil seria a resposta de karim . Por outro lado, JSON-RPC é um padrão.
fonte
Você não pode chamar uma função PHP com Javascript, da mesma forma que não pode chamar funções PHP arbitrárias ao carregar uma página (pense nas implicações de segurança).
Se você precisar envolver seu código em uma função por qualquer motivo, por que você não coloca uma chamada de função sob a definição de função, por exemplo:
Ou use um PHP include:
fonte
Você terá que expor um endpoint (URL) em seu sistema que aceitará a solicitação POST da chamada ajax em jQuery.
Então, ao processar essa url do PHP, você chamaria sua função e retornaria o resultado no formato apropriado (JSON provavelmente ou XML se preferir).
fonte
Você pode usar minha biblioteca que faz isso automaticamente, tenho melhorado nos últimos 2 anos http://phery-php-ajax.net
O javascript seria tão simples quanto
Você pode passar toda a parte do javascript dinâmico para o servidor, com um construtor de consulta como uma interface encadeada, e pode passar qualquer tipo de dados de volta para o PHP. Por exemplo, algumas funções que ocupariam muito espaço no lado do javascript, poderiam ser chamadas no servidor usando isto (neste exemplo, mcrypt, que no javascript seria quase impossível de realizar):
e no servidor
Agora, o
variable
terá os dados criptografados.fonte