Nejlepší odpověď
Žádný PHP není backendový serverový kód, což je skvělé vysvětlení od stackexchange
Nejprve si uvědomte, že máte tři jazyky, které spolupracují.
- PHP: Spouští je pouze server a odpovídá na požadavky, jako je kliknutí na odkaz (GET) nebo odeslání formulář (POST).
- HTML a JavaScript: Spouští se pouze v prohlížeči někoho jiného (kromě NodeJS).
Předpokládám, že váš soubor vypadá podobně :
function runMyFunction() {
echo "I just ran a php function";
}
if (isset($\_GET["hello"])) {
runMyFunction();
}
?>
Hello there!
Run PHP Function
Protože PHP odpovídá pouze na požadavky (GET, POST, PUT, PATCH a DELETE přes $ \_REQUEST), takto musíte spustit funkci PHP, i když jsou ve stejném souboru. Získáte tak úroveň zabezpečení: „Mám tento skript spustit nebo ne?“.
Pokud stránku nechcete obnovit, můžete odeslat požadavek do PHP bez obnovení prostřednictvím metoda zvaná Asynchronous JavaScript and XML (AJAX).
To je něco, co si můžete na YouTube vyhledat. Stačí hledat „jquery ajax“
Celý odkaz na citaci:
Spustit funkci PHP pomocí onClick
Odpovědět
Nejlepší způsob, jak to udělat, je vystavit vaše funkce PHP prostřednictvím řadiče v aplikaci na straně serveru. Javascript pak může metodu zavolat pomocí knihovny jako Axios. Pravděpodobně by to vypadalo nějak takto (toto je laravelský příklad):
//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);
}
}
?>
Toto se chystá vypálit požadavek HTTP na backend v / endpoint, který by měl váš router směrovat na metodu `ThingController @ show`, která vrátí data načtená z databáze nebo jakákoli data, která chcete předat.
Toto vrátí data z volání, která budou zpracována vaším JS, jak uznáte za vhodné.