Najlepsza odpowiedź
Żaden kod PHP nie jest kodem serwera zaplecza. Oto świetne wyjaśnienie ze stosu wymiany
Po pierwsze, zrozum, że masz trzy języki współpracujące ze sobą.
- PHP: jest uruchamiany tylko przez serwer i odpowiada na żądania, takie jak kliknięcie łącza (GET) lub przesłanie formularz (POST).
- HTML i JavaScript: działa tylko w czyjejś przeglądarce (z wyłączeniem NodeJS).
Zakładam, że Twój plik wygląda mniej więcej tak :
function runMyFunction() {
echo "I just ran a php function";
}
if (isset($\_GET["hello"])) {
runMyFunction();
}
?>
Hello there!
Run PHP Function
Ponieważ PHP odpowiada tylko na żądania (GET, POST, PUT, PATCH i DELETE przez $ \_REQUEST), w ten sposób musisz uruchomić funkcję PHP, nawet jeśli znajdują się one w tym samym pliku. Zapewnia to poziom bezpieczeństwa: „Czy powinienem uruchomić ten skrypt dla tego użytkownika, czy nie?”.
Jeśli nie chcesz odświeżać strony, możesz wysłać żądanie do PHP bez odświeżania za pośrednictwem metoda o nazwie Asynchronous JavaScript and XML (AJAX).
To jest coś, czego możesz szukać w YouTube. Po prostu wyszukaj „jquery ajax”
Pełny link do cytatu:
Wykonaj funkcję PHP za pomocą onClick
Odpowiedz
Najlepszym sposobem na to byłoby odsłonięcie twoją funkcję PHP za pośrednictwem kontrolera w aplikacji po stronie serwera. Javascript może następnie wywołać metodę przy użyciu biblioteki takiej jak Axios. Prawdopodobnie wyglądałoby to mniej więcej tak (to jest przykład 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);
}
}
?>
To wyśle żądanie HTTP do zaplecza w / endpoint, które router powinien skierować do metody `ThingController @ show`, która zwróci dane załadowane z bazy danych lub jakiekolwiek inne dane, które mają przekazać.
Spowoduje to zwrócenie danych z wywołania do przetworzenia przez Twój JS zgodnie z potrzebami.