Voglio eseguire una function PHP con un clic del button HTML.
Posso call uno script PHP in questo modo:
<form action="action.php" method="post"> Name: <input type="text" name="txt"/> <input type="submit" /> </form>
Ma non voglio invocare "action.php". Voglio solo call la function PHP che ho definito in questa pagina. Può essere fatto?
Il metodo che preferisco usare è un misto di jQuery / ajax che chiama una class PHP Object Oriented.
Ho un ascoltatore / trigger jQuery per la pressione del button con qualcosa del genere:
$('#buttonId').live('click', function() { $.get('api.php?functionName=test&inputvar=something'); return false; });
Questo chiamerà il file api.php attraverso ajax e impedirà each ulteriore azione, come l'invio di moduli.
Quindi nel file PHP puoi sempre fare qualcosa di base come:
if ($_REQUEST['functionName'] == 'test') { test(); }
oppure se hai classi enormi e molti input dinamici potresti fare qualcosa di più interessante come:
$functionName = $_REQUEST['functionName']; if (method_exists($myClassInstance, $functionName)) $myClassInstance->$functionName();
Ci sono molti modi per avvicinarsi a questo, ma questi sono i miei preferiti. Un'altra alternativa è il framework Extjs che è stato costruito per questo tipo di attività, ma se non si ha già familiarità con esso e il progetto non è "enorme" non mi preoccuperei di esso.
Infine, se hai bisogno di get una risposta dal file php come i risultati JSON, allora invece di usare la function jQuery: $.get()
, usa la function $.getJSON
Spero possa aiutare 🙂
Devi farlo da capo. Elabora il post e chiama la function nella pagina di action.php da solo. Puoi anche creare una pagina php separata per call una function definita in action.php.
Potresti farlo facilmente 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>
Questo non functionrà. PHP ha praticamente finito l'elaborazione nel momento in cui l'utente gestisce la pagina. Dovresti usare AJAX per submit i dati al server e recuperare la risposta.
Puoi avere i seguenti approcci:
1> Usa AJAX per caricare "action.php" con i dati inseriti nei campi come POST alla pagina e poi prendi la risposta e inseriscila nel corpo; o,
2> Non puoi farlo funzionare in quanto PHP è un linguaggio di programmazione lato server e HTML che stai cercando di usare con PHP è un linguaggio di programmazione lato client. Quindi non c'è modo di farlo funzionare a parte AJAX.
Questo è un po 'complicato. È ansible submit il module a se stesso, verificare se la variabile del post è impostata (se lo è, quindi la pagina viene eseguita perché il module è stato inviato ad esso), oppure è ansible utilizzare ajax. Il primo è una soluzione più semplice e il secondo non richiede il ricaricamento di una pagina. Scegli il tuo veleno 😉
Guarda questo per la prima soluzione, e guarda le funzioni ajax di jQuery per il secondo.
Dovresti includere a.php In action.php, ad esempio:
action.php:
include( 'a.php' ); //Your codes
se vuoi ad esempio la function ok () in a.php, ora esiste a.php in action.php
Potresti provare:
<form action="pageName.php/functionName" method="post"> Name: <input type="text" name="txt"/> <input type="submit" /> </form>