ユアスク by みんなシステムズ

MENU

PHPとAjaxを使ったデータの渡し方をマスターしよう!

2023/06/15

こんにちは、RIです!今回は、PHPとAjaxを使用してデータをやり取りする方法について解説します。具体的な事例として、ユーザー登録処理を通じてその方法を学んでいきましょう。

Ajaxとは?

Ajax(Asynchronous JavaScript and XML)は、ブラウザがサーバーとデータをやり取りする方法の一つです。特徴は、ページ全体を再読み込みせずにサーバーからデータを取得したり、データを送信したりできる点です。

Ajaxを用いた登録処理の基本的な流れ

  1. ユーザーがフォームに情報を入力し、「送信」ボタンをクリックします。
  2. JavaScript(Ajax)がこの情報を取得し、非同期的にサーバーに送信します。
  3. サーバー(PHP)は、送られてきたデータを処理します(今回のケースでは、データをデータベースに保存)。
  4. サーバーは処理の結果をレスポンスとしてクライアントに返します。
  5. JavaScript(Ajax)は、このレスポンスを受け取り、ブラウザに反映します。

それでは、具体的なコードを見ていきましょう。

HTML: ユーザー登録フォーム

ユーザーが入力するためのHTMLフォームを作成します。この例では、ユーザー名とパスワードを入力するシンプルなフォームを考えます。

<form id="registerForm">
  <input type="text" id="username" name="username" placeholder="Username">
  <input type="password" id="password" name="password" placeholder="Password">
  <input type="submit" value="Register">
</form>

JavaScript: Ajaxによるデータ送信

次に、ユーザーが「登録」ボタンをクリックした際に、入力データをサーバーに送信するJavaScriptコードを書きます。今回は、jQueryを使用せずに、純粋なJavaScriptでAjax処理を行います。

document.getElementById('registerForm').addEventListener('submit', function(event) {
  event.preventDefault();

  var username = document.getElementById('username').value;
  var password = document.getElementById('password').value;

  var xhr = new XMLHttpRequest();
  xhr.open("POST", 'register.php', true);
  xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

  xhr.onreadystatechange = function() {
    if (this.readyState === 4 && this.status === 200) {
      // handle response here
      console.log(this.responseText);
    }
  };

  var data = 'username=' + encodeURIComponent(username) + '&password=' + encodeURIComponent(password);
  xhr.send(data);
});

このJavaScriptのコードは、フォームからユーザー名とパスワードを取得し、それらをPOSTリクエストのパラメータとしてエンコードします。そして、XMLHttpRequestオブジェクトを使用して、非同期的にこれらのデータを’server.php’に送信します。サーバからのレスポンスが到着したとき(readyState === 4status === 200)、レスポンスの内容はresponseTextプロパティに格納されます。ここでは、デモンストレーションとしてレスポンステキストをコンソールにログ出力しています。

次に、PHP側でデータを受け取る方法を示します。この例では、受け取ったユーザー名とパスワードをデータベースに登録することを想定しています。

<?php
$username = $_POST['username'];
$password = $_POST['password'];

// Insert data into the database (not shown in this example)

echo "User registered successfully.";
?>

このPHPコードは、POSTメソッドで送信されたユーザー名とパスワードを取得し、その情報をデータベースに保存します(この例では、データベース操作の具体的なコードは省略しています)。そして、”User registered successfully.”というメッセージを出力します。この出力されたテキストが、Ajaxリクエストのレスポンスとなり、JavaScript側で利用可能となります。

以上が、PHPとAjaxを使ったデータのやり取りの基本的な方法です。Ajaxを使用することで、ページの再読み込みを伴わないスムーズなユーザー体験を提供することが可能になります。