Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
Perfeito!
Parabéns cara!
Legal Fabyo !Eu tb já fiz formulários com lógica parecida !
Muito bom!Só uma dúvida... como faço p/ passar um parametro p/ exclusao caso eu queira excluir um registro especifico??Ex.:$id = ??;Delete from tabela where codigo = $id;legal.eu nunca tinha usado call_user_func()
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.
muito bom mesmo, principalmente pra quem ta começando.Parabens
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
como faço para passar um parametro php para alguma função php ?
por exemplo :
function excluir ( $id ) {............}
coloque no campo hidden e pegue o valor dentro da função
exemplo:
function excluir ( $id ) {
$campo_novo = $_POST["campo_novo"];
}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>
entao esse exemplo que eu postei é para fazer exatamente isso, mas se voce nao entendeu ou nao conseguiu implementar, explica aonde ficou sua duvida?
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?
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.
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 !
Ao clicar nos botoes fica em branco, a mesma dúvida do amigo.. que lendo sua resposta nao consegui entender muito bem.
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á!!!
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
Excelente esse código. Eu não conheço javascript e fiquei com uma dúvida, como seria para chamar as funções por links ao invés de botões?Valeu , [ ] ´s
cara, nem li muito o codigo naum... so peguei a ideia mesmo.. tipo, axo que pra economizar linhas você pode usar o xajax pra isso... mas bacana ae teu codigo
estranho , aqui nao esta imprimindo nada, eu ate tentei com echo "$campo"; e nada , pq nao ta imprimindo ?EDITANDO........ no bloco de notas o filho da mae do bloco de notas nao pulou a linha onde estava comentado e acabou na mesma linha ficando com abre e fecha comentario / blablablablablablablablablablablabla /. agora ta funcionando, perfeito Fabyo , otimo post
tentei d todo modo ali em funçoes usar a função do pita mas nao consegui !
sera que alguem poderia me ajudar ?
Olink da função do pita é esse : http://forum.imasters.com.br/index.php?sho...p;hl=formulario
Copâero programador, você sabe como fazer isso sem dar submit? -> Apenas chamar uma função em Php através de uma outra função em javascript?Tipo, quero chamar uma função em php dentro do <body onunload=''aqui">, só que ele só aceita java script,você sabe como colocar uma função em java ali dentro que já chame uma função em php, direto, sem dar nenhum submit?
Tipo...<html><head><title>Teste...</title><?phpfunction minha_funcao_php() { echo "<script>alert('Você acabou de \n sair da Página')</script>";}?><script>function chama_funcaophp() { // algo aqui dentro que chame a função em Php direto "minha_funcao_php()", sem dar submit algum... tem como???}</script></head><body onUnLoad="chama_funcaophp()"></body></html>
Ótimo. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
Muito obrigado.