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
Carregando comentários...