こちらのサイト
https://joyplot.com/documents/js-xmlhttprequest-post/
を参考に、POSTでデータを送信→受信側でテキストデータに書き込む処理を、
XMLHttpRequestを使用しならが実装しています。
いま、main.phpとtest.phpがあり、
main.phpからPOSTでデータを送り、sub.phpで受け取っています。
(送信データ)
var postData = { "name": "名無しさん", "text": "This is a test!(" + new Date().toLocaleTimeString() + ")" };
上記を「name=名無しさん&text=This is a test!(8:30:34)」の形に整形済み(サイト参照
(sub.php)
<?php // print_r($_POST); $ok = array( 'OK', 'です'); $err = array( 'エラー', 'です'); function console_log($data){ echo '<script>'; echo 'console.log('.json_encode($data).')'; echo '</script>'; } $name = $_POST['name']; echo $name; console_log($name); if (!empty($_POST['name']) && !empty($_POST['text'])) { echo "OK <br/>"; console_log($ok); $name = $_POST['name']; $text = $_POST['text']; // POSTで送信されたデータを書き込む $filename = 'text.txt'; $fp = fopen($filename, 'a'); fwrite($fp, $name . ' : ' . $text . PHP_EOL); fclose($fp); } else { echo "エラー <br/>"; console_log($err); } ?>
Firefoxの開発ツールのコンソールとEchoを利用してデバッグしています。
if文の中身が書き込み処理で、以外はだいたいデバッグテキストです。
sub.phpでデータを受け取ったところ、無事にファイルへの書き込みが行われています。
(main.php上でPOSTを行うたびに、ファイルが正常に追加書き込みされている)
ただ奇妙なことに、デバッグテキストで「else」文の中のエラーが毎回表示され、OKが表示されません。
POSTの中身を確認しても、nullとなっています(sub.phpのif文の前のecho)
Javascriptのコンソールでも同様です。
こちらなにが考えられますでしょうか。
デバッグの方法が悪いのでしょうか。
よろしくお願いいたします。
ーー追記ーー
main.phpのJavascriptの部分です。
// POSTで送信するデータ var postData = { "name": "名無しさん", "text": "This is a test!(" + new Date().toLocaleTimeString() + ")" }; var xhr = new XMLHttpRequest(); xhr.open("POST", "sub.php", true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.onreadystatechange = function() { if (this.readyState == XMLHttpRequest.DONE && this.status == 200) { // 送信に成功した時の処理 console.log(this.statusText); } else { console.log( "エラーです" ); } } var sendParam = ""; for (var name in postData) { if (sendParam === "") { sendParam = name + "=" + postData[name]; } else { sendParam += "&" + name + "=" + postData[name]; } } xhr.send(sendParam);
これを関数としてwindow.confirmかonclickイベントで実行させます。
回答1件
あなたの回答
tips
プレビュー