Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Fabyo

Chamar função PHP via javascript

Recommended Posts

Pessoal vou explicar como fazer para chamar uma função php via javascript, esse metodo é muito util

e muito usado em varias linguagens como por exemplo .NET o famoso doPostBack

onde você pode usar varios botoes e ações num mesmo formulario ,sem precisar fazer gambiarra, o metodo doPostBack é usado você passando o nome da função que você quer chamar dai o javascript da um submit do form enviando o nome da função, esse metodo evita você ter que criar diversas paginas uma para cada ação como por exemplo: salvar.php. editar.php, excluir.php etc..., nesse metodo tera apenas 1 script chamado action.php e dentro dele esta todas funções que você precisa usar

 

vamos ao exemplo:

 

index.html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1257" />
<title>PosBack</title>
<script src="funcoes.js" type="text/javascript"></script>
</head>

<body>
<form id="formulario" method="post" action="action.php" name="formulario">
<input type="hidden" id="action" name="action" />
<input type="text" name="campo" /><br />
<input type="text" name="campo2" /><br />
<input type="button" value="Salvar" class="botao" onclick="java script:doPost('formulario', 'salvar');" />	
<input type="button" value="Editar" class="botao" onclick="java script:doPost('formulario', 'editar');" />	
<input type="button" value="Excluir" class="botao" onclick="java script:doPost('formulario', 'excluir');" />	

</form>
</body>
</html>

 

no index.html o mais importante é o campo hidden

 

onde via javascript na função doPost sera passado o nome da função php

e basta colocar a função doPost num botao ou numa ação que você quiser

doPost('nome_formulario', 'nome_da_funcao_php')

 

 

funcoes.js:

 

function doPost(formName, actionName)
{
var hiddenControl = document.getElementById('action');
var theForm = document.getElementById(formName);

hiddenControl.value = actionName;
theForm.submit();
}

 

no funcoes.js ele pega o nome da função passada por parametro e passa pro campo hidden e da um submit do formulario ou seja ele envia

 

action.php

 

<?php

//pego o nome da função que foi passada para o campo hidden
$funcao = $_REQUEST["action"];
/*usei REQUEST porque dependendo do que você for fazer você pode querer enviar via get o nome da função dai */ela sera pega do mesmo jeito, porque REQUEST recebe dados via GET, POST, e COOKIE

//verifica se a função existe
//http://br2.php.net/manual/pt_BR/function.function-exists.php

if (function_exists($funcao)) {
//call_user_func Chama uma função de usuário dada pelo primeiro parâmetro
//http://br2.php.net/manual/pt_BR/function.call-user-func.php
call_user_func($funcao);
}

function salvar()
{
$campo  = $_POST["campo"];
$campo2  = $_POST["campo2"];
echo "<script>alert('Salvando [$campo] e [$campo2]');</script>";
echo "<script>location.href = 'index.html';</script>";
}

function editar()
{
$campo  = $_POST["campo"];
$campo2  = $_POST["campo2"];
echo "<script>alert('Editando [$campo] e [$campo2]');</script>";
echo "<script>location.href = 'index.html';</script>";
}

function excluir()
{
$campo  = $_POST["campo"];
$campo2  = $_POST["campo2"];
echo "<script>alert('Excluindo...');</script>";
echo "<script>location.href = 'index.html';</script>";	
}

?>

 

pronto é simples, mas se algum tiver dificuldades de implementar só postar as duvidas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu! me safou um tempão, mas tem 3 coisas;1º "java script" levei um tempão pra cair na real que deveria ser "javascript".2º quando clico no btn, abre a minha página "funcoe.php" e fica em branco.. como resolvo isso ?3º to com a mesma dúdica do Júlio C. Franco, como passar um parametro dentro doPost('formulario', 'envia') na funcao envia ?Baum.. enquanto isso eu vou arriscar uns testes aki e google searchs eather.. valeu a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Respondendo a duvida do CruzBrasil e Júlio C. Franco

como mostrei no proprio exemplo, quando quiser passar um parametro por exemplo para excluir, voce passaria normalmente um id

e dai nao muda nada meu exemplo basta voce direcionar para pagina excluir.php e colocar o id no campo hidden assim a pagina de excluir ira receber o id por post e ira excluir o campo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao..boiei..mas tbm nao sei mecher muito bem..o meu problema eh o seguinte, preciso excluir funcionarios de um banco de dados, fiz a funcao em php, mas eu preciso colocar uma certa protecao pra ninguem apagar os dados sem querer, ai coloquei um botao excluir no onclick q por sua vez se clicado sim deveria chamar a funcao "excluiservidor" que eu fiz em php. mas eu nao sei como colocar dentro do <script> um comando q execute essa funcao do php. se puder me ajudar fico bem grato..vou deixar aqui um exemplo do que eu fiz e como nao sei nada de javascript ta bem complicadinho..Obrigado a quem puder me ajudar.<input type="button" name="excluir" value="Excluir" onclick="excluifuncionario()" /><script>function excluifuncionario(){if(!confirm('Deseja realmente excluir esse servidor?'))window.location.reload();else\\chamar a funçaõ excluiservidor do php }</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao, o problema é que pra mim que estou começando fica meio complicado porque é muito generico sabe? do tipo..milhoes de codigos e eu acabo me perdendo no que significa o uqe..mas tudo bem nao esquenta nao..to ralando aqui uma hora eu aprendo.. soh o q eu queria fazer era um jeito facil de chamar uma funcao php dentro do java, pq o cara que tinha bolsa antes d mim aqui na facu fazia essas coisas em tipo 5 linhas ou menos.. e eu acho q pra conseguir chamar uma funcao caso eu clique em OK no meu onclick deve tomar mais ou menos isso tbm :) .. a funcao que você colocou tenho certeza que é otima e deve funcionar pra um monte de cosias..mas er..tem muita letrinha pra mim ainda.. hehe..se der pra ajduar eu agradeço muito, senao rolar sussa eu tenho certeza q ainda vou ter bilhoes d duvidas..valeu !!!ah, pra completar minha duvida, eu queria dizer que nao sei o que eh div, ou hidden e pra eu entender a diferença entre post e get ja deu um trabalhao, e o negocio do doPost..hum pra q q serve?

Compartilhar este post


Link para o post
Compartilhar em outros sites

doPost é a função que da o submit na pagina passando o nome da função php que deve ser executada.

 

e campos hidden sao campos ocultos onde voce guarda um valor o o usuario nao visualiza na tela, só lembrando que se o usuario ver o codigo fonte da pagina ele ira ver o valor do hidden, entao nao use hidden para dados que precisam ter privacidade.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como eu falei antes, eu já tinha feito algo parecido.

O PHP + JavaScript formam uma dupla muito eficiente, podendo ser feito com os 2 formulários bem complexos...

Neste caso, o mais importante é o theForm.submit(); na função JavaScript, sem ele somente seria possível chamar a função PHP com Ajax, que eu ainda não domino.

Parabéns Fabyo, pelo código simples porém, bem pensado !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas fiquei com uma duvida?No caso eu estou passando por GET e não passando po POST..Uando um link dinamico.A função usa dois paramtros ... nome formulario e nome da funçãoComo eu faço, ja que estou usando link dinamico?e a pagina que envia a variavel é o prorpio carrinho de compras no caso "carrinho.php"Muito obrigado desde já!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao esse exemplo que eu postei é para fazer exatamente isso, mas se voce nao entendeu ou nao conseguiu implementar, explica aonde ficou sua duvida?

Estou me esforçando muito para encontrar ensinamento de como passar informações do JavaScript para o php. Seus ensinamentos "quase" responderam o que procuro.Quero colocar um banner rotativo, com leitura das imagens em um array local e quando clicado na imagem, contar o clique no php e saltar ao site do cliente.A idéia de seus ensinamentos sugerem isso, mas não consigo abstrai-los para solucionar meu problema. Pode me ajudar?Grato - Flavio

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.