インターネットの発展に伴い、フォームを通じてユーザーデータを送信する必要がある Web サイトが増えています。中でも PHP は広く使用されているサーバーサイドプログラミング言語であり、フォームデータの処理に非常に適しています。 PHP では、フォーム データを POST メソッドを通じて渡すことができます。通常、POST は送信後に他のページにジャンプしますが、フォームデータを送信した後にページがジャンプせず、同じページに送信結果が表示されることを希望する場合があります。この記事では、ページにジャンプせずに PHP で POST リクエストの送信を実装する方法を紹介します。
1. AJAX テクノロジーを使用する
AJAX とは、Asynchronous JavaScript and XML (非同期 JavaScript および XML) の略で、全体を更新せずに JavaScript バックグラウンドを介してサーバーからデータを取得する方法です。ページ データテクノロジー。したがって、AJAX テクノロジを使用すると、ページを更新せずにフォーム データを送信できます。
まず、HTML コードに jQuery ライブラリを導入する必要があります。 jQuery は、JavaScript プログラミングを大幅に簡素化する軽量の JavaScript ライブラリです。
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
jQuery でフォームを操作するには、form タグに ID 属性を追加します。
<form id="myForm" action="submit.php" method="post"> <!-- 表单元素 --> </form>
JavaScript で jQuery の $.post() メソッドを使用して、フォーム データを送信します。サンプル コードは次のとおりです。
$(function(){ $('#myForm').submit(function(event){ event.preventDefault(); // 阻止表单默认提交 $.post('submit.php', $(this).serialize(), function(response){ // 处理服务器返回的响应数据 }); }); });
$.post() メソッドは、送信される URL、送信されるデータ、および成功時のコールバック関数の 3 つのパラメーターを受け取ります。このうち、$(this).serialize() メソッドは、フォーム データを文字列にシリアル化して送信しやすくします。
PHP ファイル (submit.php など) では、$_POST スーパー グローバル配列を使用してフォーム データを受け取り、処理後にクライアントに返します。サンプルコードは以下の通りです:
<?php // 处理表单数据 $response = array("status" => 1, "message" => "提交成功"); echo json_encode($response); // 将响应数据转换为 JSON 格式返回给客户端 ?>
2. iframeを利用した実装
iframeを利用する方法は比較的簡単で、フォーム送信時に非表示のiframeを作成し、フォームデータを送信するだけで済みます。 iframe。フォームデータは iframe 内で送信されるため、現在のページの URL は変更されません。最後に、JS を通じて iframe 内の応答データを取得し、現在のページに表示できます。
HTML コードは次のとおりです。
<form id="myForm" target="iframe" action="submit.php" method="post"> <!-- 表单元素 --> <input type="submit" value="提交"> </form> <iframe name="iframe" style="display:none;"></iframe>
このうち、フォームの target 属性は、送信先のウィンドウまたはフレームを指定します。ジャンプしないページを実現したいので、ターゲットを非表示の iframe として指定します。
submit.php でフォーム データを処理し、応答データを iframe に返します。
<?php // 处理表单数据 $response = array("status" => 1, "message" => "提交成功"); echo "<script>parent.postMessage('" . json_encode($response) . "', '*');</script>"; // 将响应数据传递给父页面 ?>
親ページの JS を介して iframe の読み込みイベントをリッスンし、応答データを取得します。 iframe:
$(function(){ $('#iframe').on('load', function(){ var response = $(this).contents().find('body').html(); // 处理服务器返回的响应数据 }); });
要約
この記事では、ページにジャンプせずに PHP による POST リクエストの送信を実装する 2 つの方法、つまり AJAX テクノロジを使用する方法と iframe を使用する方法を紹介します。どちらの方法にも独自の長所と短所があり、特定のニーズに応じて選択できます。
AJAX テクノロジーを使用すると、ページの更新を最大限に回避でき、操作プロセスがよりスムーズになります。ただし、JavaScript の基本的な知識と jQuery ライブラリに関する知識が必要です。
iframe テクノロジを使用すると実装が簡単になりますが、もう 1 つの iframe を作成し、iframe 内の応答データを処理する必要があります。
以上が投稿を送信するときに PHP がページにジャンプしない場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。