Bästa svaret
Ingen PHP är backend-serverkod här är en bra förklaring från stackexchange
Först först, att du har tre språk som arbetar tillsammans.
- PHP: Körs bara av servern och svarar på förfrågningar som att klicka på en länk (GET) eller skicka ett formulär (POST).
- HTML & JavaScript: körs bara i någon webbläsare (exklusive NodeJS).
Jag förutsätter att din fil ser ut som :
function runMyFunction() {
echo "I just ran a php function";
}
if (isset($\_GET["hello"])) {
runMyFunction();
}
?>
Hello there!
Run PHP Function
Eftersom PHP bara svarar på förfrågningar (GET, POST, PUT, PATCH och DELETE via $ \_REQUEST), så måste du köra en PHP-funktion även om de finns i samma fil. Detta ger dig en säkerhetsnivå, "Ska jag köra det här skriptet för den här användaren eller inte?".
Om du inte vill uppdatera sidan kan du göra en begäran till PHP utan att uppdatera via en metod som heter Asynchronous JavaScript and XML (AJAX).
Det är dock något du kan slå upp på YouTube. Sök bara "jquery ajax"
Hel länk till citat:
Kör PHP-funktionen med onClick
Svar
Det bästa sättet att göra detta skulle vara att exponera din PHP-funktion via en styrenhet på din serversida-app. Javascript kan sedan ringa metoden med hjälp av ett bibliotek som Axios. Det skulle förmodligen se ut så här (Detta är ett Laravelish-exempel):
//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);
}
}
?>
Detta kommer att avfyra en HTTP-begäran till backend vid / slutpunkt, som din router ska dirigera till "ThingController @ show" -metoden, som kommer att returnera data som laddats från databasen, eller vilken data du vill att den ska passera.
Detta kommer att returnera data från samtalet som ska behandlas av din JS som du anser lämpligt.