javascriptで作成したJSONをphpにPOSTしてfile_get_contents('php://input')でダンプしても出力がString(0)""になる

実現したいこと

  • javascript上で作成したjsonデータをfetch APIでphpにpostしてphpのフロント上で受信したjsonを表示させたいです。
  • php上でデータを表示させたいです。

発生している問題

  • file_get_contents('php://input')でダンプしてもデータがString(0)""となってしまいます。

ソースコード

実際に書いてみたソースコードを記載します。

javascript

1 window.addEventListener('DOMContentLoaded', function(){2 3 // 送信するJSON4 let data = [5 {6 "title": "K331",7 "category": "Classic",8 "release_date": "2019-11-25"9 },10 {11 "title": "Paradise",12 "category": "Rock",13 "release_date": "2019-12-18"14 },15 {16 "title": "Baby",17 "category": "Pops",18 "release_date": "2020-01-07"19 }20 ];21 22 // Fetch APIでデータ送信23 fetch('/99_test.php', { // 送信先URL24 method: 'post', // 通信メソッド25 headers: {26 'Content-Type': 'application/json' // JSON形式のデータのヘッダー27 },28 body: JSON.stringify(data) // JSON形式のデータ29 })30 .then(response => response.text())31 .then(data => {32 console.log(data);33 });34 });

php

1<?php2$dataset = file_get_contents('php://input');3$data = json_decode($dataset, true);4$clean = array();5 6if( $data ) {7 foreach( $data as $key => $value ) {8 9 $clean[$key] = array();10 11 foreach( $value as $c_key => $c_value ) {12 $clean[$key][$c_key] = htmlspecialchars( $c_value, ENT_QUOTES);13 }14 }15};16 17echo 'recieved dataset';18var_dump($dataset);19echo 'recieved data';20var_dump($data);21echo 'recieved clean';22var_dump($clean);23return;24?>

javascript側のconsole

1<!DOCTYPE html>2<html lang="ja">3<head>4 <meta charset="UTF-8">5 <meta name="viewport" content="width=device-width, initial-scale=1.0">6 <title>Document</title>7</head>8<body>9<script type="text/javascript" src="https://ad.xdomain.ne.jp/js/server-php.js"></script>10 11recieved datasetstring(197) "[{"title":"K331","category":"Classic","release_date":"2019-11-25"},{"title":"Paradise","category":"Rock","release_date":"2019-12-18"},{"title":"Baby","category":"Pops","release_date":"2020-01-07"}]"12recieved dataarray(3) {13 [0]=>14 array(3) {15 ["title"]=>16 string(4) "K331"17 ["category"]=>18 string(7) "Classic"19 ["release_date"]=>20 string(10) "2019-11-25"21 }22 [1]=>23 array(3) {24 ["title"]=>25 string(8) "Paradise"26 ["category"]=>27 string(4) "Rock"28 ["release_date"]=>29 string(10) "2019-12-18"30 }31 [2]=>32 array(3) {33 ["title"]=>34 string(4) "Baby"35 ["category"]=>36 string(4) "Pops"37 ["release_date"]=>38 string(10) "2020-01-07"39 }40}41recieved cleanarray(3) {42 [0]=>43 array(3) {44 ["title"]=>45 string(4) "K331"46 ["category"]=>47 string(7) "Classic"48 ["release_date"]=>49 string(10) "2019-11-25"50 }51 [1]=>52 array(3) {53 ["title"]=>54 string(8) "Paradise"55 ["category"]=>56 string(4) "Rock"57 ["release_date"]=>58 string(10) "2019-12-18"59 }60 [2]=>61 array(3) {62 ["title"]=>63 string(4) "Baby"64 ["category"]=>65 string(4) "Pops"66 ["release_date"]=>67 string(10) "2020-01-07"68 }69}

使用開発環境

  • php 7.4.21
  • MAMP 6.6

コメントを投稿

0 コメント