Migliore risposta
Nessun PHP è il codice del server di backend qui è unottima spiegazione da stackexchange
Innanzitutto, tieni presente che hai tre lingue che lavorano insieme.
- PHP: viene eseguito solo dal server e risponde a richieste come fare clic su un collegamento (GET) o inviare un modulo (POST).
- HTML e JavaScript: viene eseguito solo nel browser di qualcuno (escluso NodeJS).
Presumo che il tuo file assomigli a :
function runMyFunction() {
echo "I just ran a php function";
}
if (isset($\_GET["hello"])) {
runMyFunction();
}
?>
Hello there!
Run PHP Function
Poiché PHP risponde solo alle richieste (GET, POST, PUT, PATCH e DELETE tramite $ \_REQUEST), è così che devi eseguire una funzione PHP anche se si trovano nello stesso file. Questo ti dà un livello di sicurezza, "Devo eseguire questo script per questo utente o no?".
Se non vuoi aggiornare la pagina, puoi fare una richiesta a PHP senza aggiornare tramite un metodo chiamato Asynchronous JavaScript and XML (AJAX).
Questo è qualcosa che puoi cercare su YouTube però. Cerca semplicemente "jquery ajax"
Link completo alla citazione:
Esegui la funzione PHP con onClick
Risposta
Il modo migliore per farlo sarebbe esporre la tua funzione PHP tramite un controller sulla tua app lato server. Il Javascript può quindi chiamare il metodo utilizzando una libreria come Axios. Probabilmente sarebbe simile a questo (Questo è un esempio Laravelish):
//HTML
//JS
var handleClick = function(event) {
axios.get("/endpoint, {
params: {ID: 1234}
})
.then(function(response) {
});
};
//PHP
namespace \App\Http\Controlllers;
use \App\Thing;
use \App\Http\Controllers\Controller;
class ThingController extends Controller
{
public function show($id)
{
return Thing::find($id);
}
}
?>
Questo sta per lanciare una richiesta HTTP al backend in / endpoint, che il router dovrebbe instradare al metodo `ThingController @ show`, che restituirà i dati caricati dal database, o qualunque dato tu voglia che passi.
Questo restituirà i dati della chiamata che verranno elaborati dal tuo JS come meglio credi.