質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

解決済

4回答

1856閲覧

JavascriptからPHPに変数受け渡ししても表示されない

sakya

総合スコア12

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

0グッド

2クリップ

投稿2020/07/22 02:45

編集2020/07/22 03:27

JavascriptからPHPに変数を受け渡そうとしています。
コンソールでは「Hello World!」と帰ってきているのですが、phpを見ると何も表示されません。
どなたか教えていただけないでしょうか。

java

1var data = 'Hello World!'; 2 3$.ajax({ 4 type: "POST", 5 url: "test5.php", 6 data: {"item": data}, 7 scriptCharset: 'utf-8', 8 success: function(data){ 9 console.log(data); 10 } 11 });

php

1echo $_POST['item'];

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/07/22 02:50

> phpを見ると どうやって見ましたか?
sakya

2020/07/22 02:51

自分のサーバーを持っているのでそれにアップロードしました。
maisumakun

2020/07/22 02:54

「どうやって見た」かが疑問なのはその後の話です。
sakya

2020/07/22 02:55

「test5.php」を開いただけですが、足りなかったでしょうか
退会済みユーザー

退会済みユーザー

2020/07/22 03:10

html化前にPHPは動作します。
sakya

2020/07/22 03:14

つまり、記述が足りたいということでしょうか。
miyabi_takatsuk

2020/07/22 03:14

test5.phpを直接見た時点で、 POSTはされません。
sakya

2020/07/22 03:15

どのような記述?をすればPOSTされるようになるのでしょうか
swordone

2020/07/22 03:18 編集

そもそもタグのJavaは関係ないのでは?
sakya

2020/07/22 03:21

そうですね。先ほどまでJavaかPHPどちらが問題なのかわかっていなかったので両方書きました。
miyabi_takatsuk

2020/07/22 03:21

JavaScriptないし、form要素でPOST送信すればPOSTされます。 つまり、質問のコードでPOSTはされています。 しかし、PHPを直接閲覧では、POSTの内容は確認できません。 なぜならPOSTがそもそもされてないからです。 test5.phpのコンソールで直接自身にPOSTさせれば見れるかもしれませんが・・・。 確認用に、PHP側(test5.php)から、POSTされた内容を返すようにして、 送信した側からレスポンスを確認するのが手っ取り早いかと。
miyabi_takatsuk

2020/07/22 03:24 編集

> そうですね。先ほどまでJavaかPHPどちらが問題なのかわかっていなかったので両方書きました。 勘違いまだしてます。 JavaとJavaScriptは全く別物です。 今回、Javaは全く関係ない物と思われます。 JavaScriptは関係してるので、質問タグは戻すべきです。 (Javaだけ消す)
sakya

2020/07/22 03:26

javaとjavascriptは全くの別物なんですね。指摘されるまで気づきませんでした。 ありがとうございます。
sakya

2020/07/22 03:34

2件前の返信について POSTというものは別のファイルに移すことは基本的にはできないということでしょうか。
miyabi_takatsuk

2020/07/22 04:06

別のファイルに移す、というのがどういうことを意図しているかわかりませんが・・・。 POSTはhttpリクエストの一種のため、受け取り側で内容確認するには、hentaimanさんの回答通り、サーバーログを確認するか、 送信側にそのまま内容をレスポンスして、送信側で内容確認するしかありません。 また、POSTを擬似的に作りそのまま受け取り側で内容を確認できる、というアプリケーションもあるので、 そういったものを使うとかですね。
sakya

2020/07/22 04:08

わかりました。 アプリケーションについて調べてみます。
miyabi_takatsuk

2020/07/22 04:13

その前に、そのアプリケーションを使うにしても、HTTPリクエストに関して、勉強すべきです。 でないと、そのアプリケーションを使っても、また、実装の段階で、また同じような疑問にぶつかると思います。
guest

回答4

0

ベストアンサー

「test5.php」を開いただけですが、足りなかったでしょうか

はい、ただ開いただけではGETアクセスになりますので、$_POSTに値は来ません。(E_NOTICEを表示するようにしていないのであれば)至って正常な動作です。

投稿2020/07/22 02:57

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sakya

2020/07/22 03:01

E_NOTICEを表示するにはどのようにすればいいのでしょうか
maisumakun

2020/07/22 03:03

えっと、E_NOTICEを表示するようにした場合、「Undefined index: item」のようなメッセージが出るようになるだけで、値が取れるわけではありませんが、それでも大丈夫ですか?
sakya

2020/07/22 03:05

いえ、値を受け取れないと困ります。 GETではできないでしょうか。
maisumakun

2020/07/22 03:11 編集

ブラウザでただ開いた際には、値を渡していないので、受け取るべき値は当然存在しませんが、それは大丈夫ですか? (正しくconsole.logが表示されるということは、JavaScriptからの呼び出しは正常に動いているようです)
sakya

2020/07/22 03:14

ブラウザを開いた際には値が存在していないことを知りませんでした。 ではどのようにすれば、値が存在するのでしょうか。
maisumakun

2020/07/22 03:17

何のために、ブラウザから値を確認したいのですか?
sakya

2020/07/22 03:20

目標はphpの変数に値を入れたいということです。 そのための確認としてPOSTに入っているか直接確認をしていました。
maisumakun

2020/07/22 03:22

> 目標はphpの変数に値を入れたいということです。 その変数は、リクエストごとに別々となる(一度JavaScriptで送信しても、次にブラウザから見た際にはその値は残らない)、ということは理解していますか?
sakya

2020/07/22 03:23

はい。それは理解しています。
maisumakun

2020/07/22 03:25

でしたら、当然ながらPOSTして表示される画面でしかその値は確認できません。 フォームを作る、あるいはリクエストを投げられるツールを使うなどの方法を使って、POSTリクエストを行ってください。
sakya

2020/07/22 03:32

すみません。勉強不足でわかっていないのですが、POSTリクエストとはPOSTの方法の一つということですか。
maisumakun

2020/07/22 03:33

「POSTの方法」とはどういう意味ですか?
sakya

2020/07/22 03:44

普通に$_POSTでやることと変わらないという意味です。 あと、同じファイルにPOSTやGETすることはもう少し簡単にできるのでしょうか。
maisumakun

2020/07/22 03:49

「同じファイル」とはどちらの意味ですか?(どちらでもありませんか?) ・Aの結果をブラウザで表示した状態で、そのA宛てにPOSTを行う ・ブラウザから。AというPHPファイルにGETやPOSTを行う
sakya

2020/07/22 03:59

javascriptが紐づけられているファイルにPOSTやGETを行うということです。
maisumakun

2020/07/22 04:10

GETは単にブラウザアクセスすることで行なえます。
sakya

2020/07/22 04:39

7人の方に回答や修正依頼などをしていただきとてもありがとうございます。 しかし、自分が勉強不足だったため、この問題を片づける前にjavascriptやPHPについてもう少し勉強しようと思います。 問題は解決していませんが、長い時間回答をくださったmaisumakunさんにベストアンサーに選ばせていただきます。 皆さんありがとうございました。
m.ts10806

2020/07/22 04:42

「問題は起きていない」のが答えなのですけど、なんの問題が残ってるのでしょう。
sakya

2020/07/22 04:45

エラーという意味の問題ではなく、 変数に代入したいがうまくできない(やり方がわからない)ということが問題です。
m.ts10806

2020/07/22 05:18

問題がある=エラーがある ではないです。 「POSTで送信した先にURL直アクセスして何も出ないのは正しい挙動」です。 console.logで確認した結果で十分、正しく動いています。 POST送信した先をURL直アクセスで確認しようとしたことが間違いです。
sakya

2020/07/22 06:24

なるほど。 自分の間違いがよくわかりました。 解決したにもかかわらず、対応して頂きありがとうございます。
m.ts10806

2020/07/22 06:28

私も回答に書きましたが、maisumakunさんの当回答にある通りです。 >至って正常な動作です。
guest

0

前提として、Ajaxはバックグラウンドで実行されるものなので「画面」という概念は存在しません。
渡された情報を受取り所定の処理を行い、呼び出しもとに返します。

そしてPOSTは「PHPを開いた(これを[URL直うちで実行した]として)」とて、実行結果は見れません。そこはform送信と同じです。POST送信した時だけです。
「URLを開いた」状態はGETです。$_SERVER['REQUEST_METHOD']を出力して確認してください。

Ajaxのバックグラウンドの実行結果を確認したいのでしたら、既にされている通りで正しいです。

コンソールでは「Hello World!」と帰ってきているのですが、phpを見ると何も表示されません。

特に問題なく処理は行われています。

処理途中の状況を確認したいのでしたら、都度echoして結果を確認するのではなく、例えばfile_put_contentsなどを利用してテキストファイルに書き出したりログ出力ライブラリを利用したりすると良いでしょう。

投稿2020/07/22 04:12

m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

phpを見ると何も表示されません。

単なる勘違いだと思います。
Hello worldはjsからphpに渡り、phpが出力しているから
js側で受けと入れています

投稿2020/07/22 04:12

yambejp

総合スコア116724

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

できること

  1. 意図したurl(php)にアクセス出来ているか?→アクセスログを確認する
  2. phpにエラーが出てないか?→エラーログを確認、phpの構文チェック
  3. リクエストパラメーターは受け取れているか?→phpにて$_REQUEST等をprint_r,var_dump
  4. リクエストメソッドは意図通りか?→アクセスログの確認、phpにてい$_SERVER等をprint_r,var_dump
  5. 意図したリクエストになっているか?→ブラウザのdevelopertoolsで確認
  6. javascriptにエラーが出てないか?→ブラウザのdevelopertoolsで確認

投稿2020/07/22 02:54

hentaiman

総合スコア6426

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sakya

2020/07/22 03:03

ご返信ありがとうございます。 一応わかるものだけ返信させていただきます。 6.developertoolsで確認ましたが、エラーは出ていません。 2.のphpの構文チェックが正しいのか少々不安です。
hentaiman

2020/07/22 06:06

一切問題無かったようで何よりです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問