JavaScript は広く使用されているプログラミング言語ですが、PHP はサーバー側で使用されるスクリプト言語です。 Web 開発のプロセスでは、多くの場合、これら 2 つの言語を組み合わせる必要があります。この記事ではJavaScriptにPHPスクリプトを埋め込む方法と注意点を詳しく紹介します。
1. PHP スクリプトを JavaScript に埋め込む必要があるのはなぜですか?
Web 開発では、実際の行動など、ユーザーの行動に基づいてページのコンテンツを動的に更新する必要があることがよくあります。ユーザーが入力したデータに基づいて時間を計算したり、結果を表示したり、ユーザーが選択したオプションに基づいて異なるコンテンツを動的に表示したりできます。これらの関数には通常、JavaScript を使用する必要があります。
サーバー側では、動的データの生成と出力を処理するために PHP を使用することがよくあります。たとえば、ユーザーがフォーム データを送信した後、そのデータをサーバーに送信し、PHP を使用して処理し、最後に処理結果をユーザーに返す必要があります。このように、サーバーとクライアント間のデータ対話の目的を達成するには、JavaScript に PHP スクリプトを埋め込む必要があります。
2. Ajax テクノロジーを使用してネストを実現する
PHP スクリプトを JavaScript でネストする最も一般的な方法は、Ajax テクノロジーを使用することです。
Ajax は、非同期リクエストを送信し、ページ全体を更新せずにページの一部を更新できる非同期 Web アプリケーションを作成するための一連のテクノロジです。通常、ページの JavaScript に Ajax コードを記述し、JavaScript を使用してサーバーにリクエストを送信し、サーバーは処理されたデータを返し、最後に JavaScript を使用してデータをページに更新します。
Ajax テクノロジを使用する場合は、まず XMLHttpRequest オブジェクトを作成し、次にこのオブジェクトを使用してサーバーにリクエストを送信する必要があります。以下は典型的な Ajax コードです。
var xhr = new XMLHttpRequest(); xhr.open('POST', 'example.php', true); xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); xhr.onload = function () { //处理返回的数据 }; xhr.send('data=value');
このコードでは、まず XMLHttpRequest オブジェクトを作成し、リクエスト メソッド (POST)、ターゲット URL、open メソッドを介して非同期かどうかを指定します。次に、setRequestHeader メソッドを使用してリクエスト ヘッダーを設定し、リクエストされたデータ型が application/x-www-form-urlencoded であることをサーバーに伝えます。次に、サーバーから返されたデータを onload メソッドで処理します。最後に、send メソッドを使用してサーバーにリクエストを送信し、データ data を value に設定します。
PHP スクリプトでは、$_POST 配列を使用して、クライアントによって送信されたデータを取得できます。以下は簡単な PHP の例です:
<?php $data = $_POST['data']; $result = doSomethingWithData($data); echo $result; ?>
この例では、まず $_POST 配列を使用してクライアントから送信されたデータを取得し、次に doSomethingWithData 関数を使用してデータを処理し、結果を出力します。
3. クロスドメイン リクエストの処理
Ajax テクノロジを使用する場合、クロスドメイン リクエストの制限という 1 つの問題に注意する必要があります。クロスドメイン リクエストとは、http://example.com から http://localhost:8080 にリクエストを送信するなど、別のドメイン名またはポートにリクエストを送信するリクエストを指します。
クロスドメインリクエストの制限はブラウザによって実装されます。デフォルトでは、ブラウザーはクロスドメイン リクエストを許可せず、同様のエラー メッセージをコンソールに出力します。
Access to XMLHttpRequest at 'http://localhost:8080/example.php' from origin 'http://example.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
クロスドメイン リクエストの制限を解決するには、CORS (Cross-Origin Resource Sharing) を追加します。 ) サーバー側の) ヘッダー情報を取得し、応答に Access-Control-Allow-Origin ヘッダーを追加し、クロスドメイン リクエストを許可するドメイン名リストを設定します。 PHP では、次の方法で CORS ヘッダーを追加できます。
header('Access-Control-Allow-Origin: http://example.com');
上記のコードは、http://example.com からのクロスオリジン リクエストを許可します。
CORS ヘッダーの追加に加えて、JSONP (パディング付き JSON) を使用してクロスドメイン リクエストを実装することもできます。 JSONP は、