Loading
carregando...

Chamar função PHP via javascript


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

  1.  
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    
  3. <html xmlns="http://www.w3.org/1999/xhtml">
    
  4. <head>
    
  5.    <meta http-equiv="Content-Type" content="text/html; charset=windows-1257" />
    
  6.    <title>PosBack</title>
    
  7.    <script src="funcoes.js" type="text/javascript"></script>
    
  8. </head>
    
  9. <body>
    
  10.  
  11. <form id="formulario" method="post" action="action.php" name="formulario">
    
  12.    <input type="hidden" id="action" name="action" />
    
  13.    <input type="text" name="campo" /><br />
    
  14.    <input type="text" name="campo2" /><br />
    
  15.    <input type="button" value="Salvar" class="botao" onclick="javascript:doPost('formulario', 'salvar');" />      
    
  16.    <input type="button" value="Editar" class="botao" onclick="javascript:doPost('formulario', 'editar');" />      
    
  17.    <input type="button" value="Excluir" class="botao" onclick="javascript:doPost('formulario', 'excluir');" />    
    
  18. </form>
    
  19.  
  20. </body>
    
  21. </html>
    
  22.  

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:

  1.  
  2. function doPost(formName, actionName){
  3.         var hiddenControl = document.getElementById('action');
  4.         var theForm = document.getElementById(formName);
  5.  
  6.         hiddenControl.value = actionName;
  7.         theForm.submit();
  8. }
  9.  

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

  1.  
  2.  
  3. <?php
  4. //pego o nome da função que foi passada para o campo hidden
  5. $funcao = $_REQUEST["action"];
  6. /*usei REQUEST porque dependendo do que você for fazer você pode querer enviar via get o nome da função dai 
  7. ela sera pega do mesmo jeito, porque REQUEST recebe dados via GET, POST, e COOKIE*/
  8.  
  9. //verifica se a função existe
  10. //http://br2.php.net/manual/pt_BR/function.function-exists.php
  11.  
  12. if (function_exists($funcao)) {
  13. //call_user_func Chama uma função de usuário dada pelo primeiro par&acirc;metro
  14. //http://br2.php.net/manual/pt_BR/function.call-user-func.php
  15.         call_user_func($funcao);
  16. }
  17.  
  18. function salvar(){
  19.         $campo  = $_POST["campo"];
  20.         $campo2  = $_POST["campo2"];
  21.         echo "<script>alert('Salvando [".$campo."] e [".$campo2."]');</script>";
  22.         echo "<script>location.href = 'index.html';</script>";
  23. }
  24.  
  25. function editar(){
  26.         $campo  = $_POST["campo"];
  27.         $campo2  = $_POST["campo2"];
  28.         echo "<script>alert('Editando [".$campo."] e [".$campo2."]');</script>";
  29.         echo "<script>location.href = 'index.html';</script>";
  30. }
  31.  
  32. function excluir(){
  33.         $campo  = $_POST["campo"];
  34.         $campo2  = $_POST["campo2"];
  35.         echo "<script>alert('Excluindo...');</script>";
  36.         echo "<script>location.href = 'index.html';</script>";  
  37. }
  38. ?>
  39.  


pronto é simples, mas se alguém tiver dificuldades de implementar só postar as dúvidas.



Fonte: http://forum.imasters.com.br/topic/164116-chamar-funcao-php-via-javascript/


Autor: Dárcio Gomes
Data: 15/08/2012 00:00:00