ホームページ >バックエンド開発 >PHPの問題 >投稿を送信するときに PHP がページにジャンプしない場合はどうすればよいですか?

投稿を送信するときに PHP がページにジャンプしない場合はどうすればよいですか?

PHPz
PHPzオリジナル
2023-03-29 10:13:351059ブラウズ

インターネットの発展に伴い、フォームを通じてユーザーデータを送信する必要がある 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。