javascriptファイルからphpファイルへjsonデータを送信したいがnullとなってしまう。
前提・実現したいこと
・javascriptにてjsonデータをPHPファイルに送信。
・phpファイルで受け取ったjsonデータを加工。
発生している問題
phpファイルでjsonデータを受け取れず、nullが返ってくる。
該当のソースコード
javascript
1!function(){ 2 let btn = document.querySelector('#get'); 3 btn.addEventListener('click', function(){ 4 5 //テストJSONデータ 6 var json_data = JSON.stringify({ "Language": "en" }); 7 //送信先PHP 8 var url = "handler"; 9 10 //ajax処理開始 11 var xhr = new XMLHttpRequest(); 12 13 xhr.onreadystatechange = function(){ 14 if(xhr.readyState === 4 && xhr.status === 200){ 15 document.getElementById('out').innerHTML = this.responseText; 16 } 17 }; 18 19 xhr.open('POST', url, true); 20 xhr.setRequestHeader("content-type", "application/json;charset=UTF-8"); 21 xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); 22 xhr.send(json_data); 23 }); 24}();
PHP
1if ($_SERVER['HTTP_X_REQUESTED_WITH'] !== 'XMLHttpRequest') { 2 die(json_encode(array('stat' => "参照不成功:不正な呼び出し"))); 3} 4// ファイル受け取り 5$json = file_get_contents('php://input'); 6// jsonデコード 7$data = json_decode($json, true); 8var_dump($data);
対応内容
・送信データのリクエストヘッダーはjson形式に修正。
・ajax送信時のセキュリティ対策として'X-Requested-With'を追加。
(上記の記述を消しても問題は解消しませんでした。)
・ajaxのレスポンスは問題なく、phpファイルに作成したコードの出力は問題なし。
使用ツール
・xampp
追記
PHP Version 8.1.2
確認ブラウザ googleChrome microsoft Edge
※回答者様のローカル環境では問題なく動作確認済み。
お手数かけますがよろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー