前提・実現したいこと
JavaScriptから実行したphpでファイルを作成したいです。
JavaScriptから送信したデータをファイルに出力するプログラムを作ろうと考えています。
データの送信はできているようなのですが、ファイルが作成されません。
発生している問題・試したこと
ファイルが作成されません。
送信したデータを送り返してコンソールに表示するようにもしていますが、
そちらはできているようです。
例えば、以下のコードで、ブラウザでhtmlにアクセスすると、はブラウザのコンソールに"Hello, World! How are you?"と表示されます。
ファイルだけが作成されず困っています。
サーバーのコンソールで直接php test.phpのようにphpを動かすと、ファイルは作成されます。
test.phpにブラウザからアクセスすると、"How are you?"と表示されます。ファイルは作成されません。
該当のソースコード
html
1<!DOCTYPE html> 2<html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 6 <title>test</title> 7 </head> 8 <body> 9 <script> 10 11 var data = 'Hello World!'; 12 13 $.ajax({ // GETで送信 14 type: "GET", 15 url: "test.php", 16 data: { 'data': data }, 17 dataType : "json", 18 scriptCharset: 'utf-8' 19 }) 20 .then( // 帰ってきたらconsoleに出力 21 function( param ){ 22 console.log( param ); 23 }, 24 function( XMLHttpRequest, textStatus, errorThrown ){ 25 console.log( errorThrown ); 26 }); 27 28 </script> 29 </body> 30</html>
php
1<?php 2 header('Content-type: application/json; charset=utf-8'); 3 $data = filter_input( INPUT_GET, 'data' ); 4 5 // ファイルに出力 6 $file = "test.txt"; 7 file_put_contents($file, $data, FILE_APPEND); 8 9 // "How are you?"を結合して返す 10 $param = $data . "How are you?"; 11 echo json_encode( $param );
補足情報(FW/ツールのバージョンなど)
Ubuntu 16.04.6 LTS
Apache/2.4.18
php 7.3.18
Chrome
回答1件
あなたの回答
tips
プレビュー