• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPからjavascriptへの変数の受け渡し)

PHPからjavascriptへの変数の受け渡し

このQ&Aのポイント
  • PHPからjavascriptへの変数の受け渡しについて考えています。
  • 具体的には、javascriptからPHP経由で他のサイトのページソースを文字列の変数として取得する方法を知りたいです。
  • また、最終的にはjavascript内で文字列として取り込む方法についても知りたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.2

こんにちは。 >ソース中でhttpRequest.responseTextを参照していますが 中身は普通取得できたものがそのまま入ってきます。 この例であれば var a='aiueo'; var b='kakikukeko'; です。 >PHPの内容がそのまま というのは、PHPのソースがそのまま表示ということでしょうか? >document.write すいません、確認の為に入れただけでした。 関数内だとソースに上書きになりますが、そのまま呼び出される場合はそこに表示されます。

ikasumiramen
質問者

お礼

返信ありがとうございます。 >中身は普通取得できたものがそのまま入ってきます。 これは非常に興味深いですね。回答の内容ですとechoの出力がそのままレスポンスのボディに格納されているということですね。 echoをマニュアルで調べると「すべてのパラメータを出力します。」と出てきます。私はこれまでこの出力というのはPHPを実行するとそのまま表示されることから、javascriptのdocument.writeのPHP版と考えていました。しかし、実際通信ストリームへ対する出力を意味し、ブラウザからユーザーが意識していないリクエストが出ていて、echoはそのレスポンスに対して出力していて、その表示は常にクライアントサイドが行っているという解釈であってるでしょうか。 また、print()関数の出力の意味するところも同様でしょうか? >というのは、PHPのソースがそのまま表示ということでしょうか? はい、そのとおりです。全てではなく部分的にですが、PHPのコードがそのまま帰ってきていました。今は手元にプログラムを実行できる環境が無いので、今夜にでも補足でその内容を書き加えたいと思います。 >すいません、確認の為に入れただけでした。 了解しました。 ここでもまた私の勘違いがあったようですね。本当に勉強不足で申し訳ありません。

ikasumiramen
質問者

補足

htmlファイルの最後にdocument.write(request.responseText);を書き足した際の出力を記載します。 --------------------------------------------------- array('method'=>'POST','header'=>"Content-type: text/xml\r\nCookie:(省略);"))); $res = urldecode(file_get_contents('http://www.○○○',false,$context)); echo $res; ?> --------------------------------------------------- 最初のarrayは$contextのオプションに当たるもので、ごらんの様にechoの内容だけでなくPHPコードの一部がそのまま帰ってきている状況です。

その他の回答 (1)

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 以下のソースで試しましたが、私の環境では取得できているようです。 また取り込んだものを変数として扱いたいのであればeval()を利用します。 例えば取得先で echo "var a = 'aiueo'"; echo "var b = 'kakikukeko'"; と出力するようなPHPであればalert(a)でaiueo、alert(b)でkakikukekoが表示されます。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>PHPからjavascriptへの変数の受け渡し</title> <script type="text/javascript"> </script> <style type="text/css"> </style> </head> <body> <script type="text/javascript"> var httpRequest = new XMLHttpRequest(); httpRequest.open ( "GET","./q7265094.php",false); httpRequest.send ( null ); document.write ( httpRequest.responseText ); // 乱暴だけど全てを変数としてみる eval ( httpRequest.responseText ); alert ( a ); alert ( b ); </script> </body> </html>

ikasumiramen
質問者

お礼

早速の回答ありがとうございます。 サーバー内の同じフォルダにq7265094.htmlとq7265094.phpを作成し、htmlについてはそのままこぴぺ、PHPについては <?php echo "var a = 'aiueo'"; echo "var b = 'kakikukeko'"; ?> としてhtmlを実行しましたが、結果は何も表示されませんでした。 firebugでチェックした結果、alert (a);の行でa is not definedというエラーが出ました。不思議なことに、alert (b);の行ではエラーは出ませんでした。 せっかく教えて頂いたのに今日は時間が無くまだ十分に試行錯誤をしていない状態ですが、いくつか気になったことがあるので教えてください。 まず、ソース中でhttpRequest.responseTextを参照していますが、質問でも書いたように私が調べたときはPHPの内容がそのまま入っていてjavascriptのコードらしきものは入っていませんでした。本来コードが正常に動作したときはどういったものが格納されるものなのでしょうか? また、document.write()でその内容を書き出していますが、これはどのような狙いがあるのでしょうか?どこかでdocument.write()はソースに上書きしてしまうと見た気がしたのですが、その場合それ以降のalertなどは動作するのでしょうか? どれも初歩的な内容かと思いますが、よろしくお願いします。

関連するQ&A