2011-04-27 25 views
5

Quiero ejecutar una función de PHP con un clic de botón HTML.¿Ejecuta una función PHP al hacer clic en el botón?

me puede llamar a un script PHP de esta manera:

<form action="action.php" method="post"> 
    Name: <input type="text" name="txt"/> 
    <input type="submit" /> 
</form> 

pero no desea invocar "accion.php". Solo quiero llamar a la función PHP que definí en esta página. Se puede hacer esto?

Respuesta

7

El método que yo prefiero usar es una mezcla ture de jQuery/ajax llamando a una clase PHP orientada a objetos.

Tengo un oyente jQuery/disparador para el botón de prensa con algo como esto:

$('#buttonId').live('click', function() { 
    $.get('api.php?functionName=test&inputvar=something'); 

    return false; 
}); 

que llamará al archivo api.php través de ajax y evitar cualquier acción adicional, como por ejemplo el envío de formularios.

A continuación, en el archivo PHP siempre se puede hacer algo básico como:

if ($_REQUEST['functionName'] == 'test') { 
    test(); 
} 

o si tiene enormes clases y un montón de entrada dinámica se podría hacer algo más interesante como:

$functionName = $_REQUEST['functionName']; 
if (method_exists($myClassInstance, $functionName)) 
    $myClassInstance->$functionName(); 

Existen numerosas formas de abordar esto, pero estos son mis favoritos. Otra alternativa es el marco de Extjs que está diseñado para este tipo de actividad, pero si todavía no está familiarizado con él y el proyecto no es "enorme", no me interesaría.

Por último, si usted está necesitando para obtener una respuesta de vuelta desde el archivo PHP como JSON resultados, a continuación, en lugar de utilizar el jQuery: $.get() función, utilice la función $.getJSON

Espero que ayude :)

0

Esto no funcionará. PHP prácticamente ha terminado de procesarse para cuando el usuario maneja la página. Tendría que usar AJAX para enviar los datos al servidor y recuperar la respuesta.

-2

Usted podría intentar:

<form action="pageName.php/functionName" method="post"> 
Name: <input type="text" name="txt"/> 
<input type="submit" /> 
</form> 
+0

pageName.php? Mi página es .html ... y no funciona de todos modos. – Voldemort

0

Puede tener los siguientes enfoques:

1> Utiliza AJAX para cargar "accion.php" con los datos introducidos en los campos como POST a la página y luego toma la respuesta y ponla en el cuerpo; o,

2> No puede hacer que funcione ya que PHP es un lenguaje de programación del lado del servidor y el HTML que está tratando de usar con PHP es un lenguaje de programación del lado del cliente. Por lo tanto, no hay forma de que funcione, excepto AJAX.

0

Esto es un poco complicado. Puede enviar el formulario a sí mismo, verificar si la variable de publicación está configurada (si es así, la página se está ejecutando porque se le envió el formulario) o puede usar ajax. La primera es una solución más fácil, y la segunda no requiere una recarga de página. Elija su veneno;)

Mire this para la primera solución, y mire jquery's ajax functions para la segunda.

2

Tiene que hacer esto en su extremo. Procese la publicación y llame a la función en la página action.php usted mismo. También puede crear una página php separada para llamar a una función definida en action.php.

0

debe incluir a.php En accion.php, por ejemplo:

accion.php:

include('a.php'); 
//Your codes 

si desea, por ejemplo, bien() en a.php, ahora. php existe en accion.php

1

Usted fácilmente podría hacerlo con jQuery

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> 



    <script type="text/javascript"> 
    function submitform(){ 
     $('#myForm').post("pageName.php", $("#myForm").serialize()); 
    } 
    </script> </head> 

<form action="pageName.php" method="post" id"myForm"> 
Name: <input type="text" name="txt"/> 
<input type="submit" /> 
</form> 
Cuestiones relacionadas