それはPHPの仕組みではありません。Javascript のようなクライアント側言語が、PHP などのサーバー側言語とこのように対話できると考えているように見えるという点で、多くの初心者が犯す一般的な思考エラーを犯しています。これは、クライアント/サーバーおよび/または要求/応答モデルの誤解によるものです。
ブラウザー (クライアント) で Web ページを要求すると、要求は Web サーバー (サーバー) によって処理され、基本的に次のような応答が返されます。
Client (browser) Server (webserver)
---------------------------------------------------
Send page request -----> Parse request
(execute PHP)
|
\|/
Parse HTML response <----- Send HTML response
(and execute (there will be no
Javascript, more PHP code in
if that was part this response)
of the response)
つまり、クライアントとサーバーは完全に分離された 2 つのプロセスであり、要求/応答の原則に基づいてのみ相互に通信します。
PHP はクライアント側で実行できません (クライアント側バージョンの PHP-GTK を除いて、ここでは説明しません)。Javascript はサーバー側で実行できません (Javascript のサーバー側バージョンを保存します。ここでは議論しません)。そのため、クライアントは PHP 関数domaincheck
を呼び出すことができず、サーバーは Javascript 呼び出しを受信しません。
そのため、完全な Web ページを再度要求するのではなく、単に Javascipt 関数を要求して PHP 関数の出力を受け取るだけの場合は、Javascipt にサーバーへの別の要求を再度行わせる必要があります ('inつまり、ブラウザのページ全体を完全に置き換えることなく)、PHP に再度応答を作成させます。今回は、Javascript が処理できる出力を使用します。これは通常、AJAX (Asynchronous JavaScript and XML) として知られています。ただし、応答は XML である必要はありません。JSON応答は非常に一般的です。HTML のフラグメント (または完全な HTML ページ) も可能です。
近いうちに例を追加する予定です。