jackytom
@jackytom

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

javascriptでpostしても、送信先で受信できない

Q&A

Closed

phpのaタグのテキストをpostしたくて、
https://qiita.com/truetech/items/31af73fc21e4732ef583
を参考にして、javascriptを書いてみましたが、送信先(php)で受信できません。
(送信先(php)でvar_dump($_POST)としても結果が""のため、そう判断しました。)

javascriptでinputのtypeをtextにし、送信元画面で表示されるか確認しましたが、こちらは問題なく表示されました。
(javascriptのform.submit()まで成功してる?)

送信先で、$serviceName = $_POST['service_name']を記述しても、'service_name'が未定義エラーになります。
従って、$serviceName = $_POST['service_name'] ?? "";としてみました。
しかしvar_dumpすると空です。

他に確認ポイントはありますか?
ご教示いただければ幸いです。
不足情報がありましたらご指摘ください。

javascriptのソースを添付します。

<script>
		document.addEventListener('DOMContentLoaded', function() {
			document.getElementById('therapy').addEventListener('click', function()
			 {
					let serviceName = document.getElementById('therapy').textContent;
					
					let form = document.createElement('form');
				    form.action = 'calender.php';
					form.method = 'post';
					
					let input = document.createElement('input');
					input.type = "text";
					input.value = serviceName;
					input.name = 'service_name';

					form.appendChild(input);
					
					document.body.appendChild(form);

					console.log(input.value);

					form.submit();
					//}
				},false)
		},false)
	</script>
	<noscript>
		JavaScriptが利用できません
	</noscript>
0

2Answer

phpのaタグのテキストをpostしたくて、

「aタグ」というのは質問のコードのどこにあるのですか? a タグではなくてテキストボックス(input type="text")ではないのですか?

Fiddler などのキャプチャツールを使って要求ヘッダー・コンテンツを見て期待通りになっているか確認してください。その程度の切り分けは質問者さんの方でお願いします。

form を submit するという操作は必須なのですか? 普通は fetch とか jQuery ajax を使ってサーバーの API に非同期で送信すると思うのですが。


上の私の質問に返事がないのでいろいろ不明ですが、「aタグ」というのは多分 html の以下のようなものだとして、

<a id="therapy">send</a>

質問者さんの JavaScript のコードをそのままコピペして、上の a タグをクリックすると以下の内容で送信され(画像は Fiddler のもの)、Content-Type は application/x-www-form-urlencoded となり、コンテンツはその通り service_name=send となります。

fiddler.jpg

したがって、サーバー側で service_name に対応する文字列を正しく取得できるようになっていれば、問題なく、上の例では send という文字列が取得できるはず。

それができないのはサーバー側の問題で、php のコードの書き方が間違っているからでは?

0Like

phpのaタグのテキストをpostしたくて、
url...
を参考にして、javascriptを書いてみました

原型を留めていません。変数も含めなるべく同じにしては?メソッドもform.method = 'post';になっています。パラメタはbody部から取得してますか?

また、参考サンプルはhtml,scriptまで網羅していますが、不具合サンプルはscriptのみです。

さらに、

let serviceName = document.getElementById('therapy').textContent;
document.getElementById('therapy').addEventListener('click', function() {				

addEventListenerしている'therapy'に対し、その中でtextContentを参照しています。(排他項目なので競合しないが)やはり、参考サンプルに準拠して作成してはどうでしょう?

0Like

Comments

  1. @jackytom

    Questioner

    回答ありがとうございます。
    参考サンプルに準拠して作成したら解決しました。
    本件、クローズさせていただきます。

  2. 解決おめでとうございます。

Your answer might help someone💌