Web アプリケーションを作成する場合、多くの場合、Ajax を使用してフォームを送信したり、処理に配列などの複雑なデータ型を使用したりする必要があります。 PHPでは基本的なデータ型のパラメータを受け取るのは簡単ですが、配列型のパラメータを受け取るには特殊な処理が必要です。次の記事では、PHP が Ajax によって送信された配列パラメーターをどのように受け取るかについて詳しく説明します。
1. Ajax で配列を送信するいくつかの方法
クライアントが jQuery などのツールを使用して Ajax リクエストを行う場合、次のことができます。配列はシリアル化されて送信されます。たとえば、次の例:
var data = { name: 'John', age: 25, hobbies: ['swimming', 'reading', 'coding'] }; $.ajax({ type: 'POST', url: 'test.php', data: {myData: JSON.stringify(data)}, success: function(res) { console.log(res); } });
サーバー側では、次のように json_decode() 関数を使用して、受信した JSON 文字列を配列に復元できます:
$data = json_decode($_POST['myData'], true); $name = $data['name']; $age = $data['age']; $hobbies = $data['hobbies'];
このメソッドはシンプルで直接的ですが、これには必要があります。 注: 送信されるデータの量が大きすぎてはなりません。大きすぎるとパフォーマンスに影響します。
FormData オブジェクトを使用すると、より柔軟なフォーム データの送信を実現できます。たとえば、次の例:
var data = { name: 'John', age: 25, hobbies: ['swimming', 'reading', 'coding'] }; var formData = new FormData(); formData.append('name', data.name); formData.append('age', data.age); $.each(data.hobbies, function(index, item) { formData.append('hobbies[]', item); }); $.ajax({ type: 'POST', url: 'test.php', data: formData, contentType: false, processData: false, success: function(res) { console.log(res); } });
サーバー側では、次のように $_POST と $_FILES を使用して、FormData によって送信されたデータを受信できます:
$name = $_POST['name']; $age = $_POST['age']; $hobbies = $_POST['hobbies'];
contentType および processData パラメータは false に設定する必要があります。そうでない場合、送信は失敗します。
Ajax 送信に jQuery などのツールを使用している場合は、配列を data パラメーターに直接渡すことができます。たとえば、次の例:
var data = { name: 'John', age: 25, hobbies: ['swimming', 'reading', 'coding'] }; $.ajax({ type: 'POST', url: 'test.php', data: data, success: function(res) { console.log(res); } });
サーバー側では、次のように $_POST を使用して配列型パラメータを受け取ることができます:
$name = $_POST['name']; $age = $_POST['age']; $hobbies = $_POST['hobbies'];
このメソッドはシンプルで効率的ですが、柔軟性がありません。十分。
2. 配列パラメータの受信
どの方法を使用して配列パラメータを送信しても、サーバーには特別な処理が必要です。 PHP には、配列パラメータを受け取るための複数のメソッドが用意されています。
シリアル化を使用するか、Ajax 送信に配列を直接渡す場合は、次のように $_POST を使用して配列パラメーターを受け取ることができます。
$name = $_POST['name']; $age = $_POST['age']; $hobbies = $_POST['hobbies'];
$data = file_get_contents('php://input'); $jsonData = json_decode($data, true); $name = $jsonData['name']; $age = $jsonData['age']; $hobbies = $jsonData['hobbies'];
$data = file_get_contents('php://input'); parse_str($data, $arrayData); $name = $arrayData['name']; $age = $jsonData['age']; $hobbies = $arrayData['hobbies'];
以上がPHPでAjaxによって送信された配列パラメータを受け取る方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。