• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPの処理結果をjavascriptで利用する方法)

PHPの処理結果をjavascriptで利用する方法

このQ&Aのポイント
  • PHPとjavascriptのやりとりについて教えていただけませんか?具体的には、データをフォームなどから受け取り、サーバー側で処理した結果の変数をjavascriptで扱う方法が知りたいです。
  • 私が試した方法ではうまくいかず、PHPとjavascriptが別の場所で動作しているため、情報の受け渡しが基本的に不可能です。PHP側で動的に書き出すことで見かけ上はできますが、実際には値が入っていない状態となってしまいます。また、XmlHttpRequestを使用してPHPの処理結果を待ってから変数を利用しようとしましたが、値の受け取り方がわかりませんでした。
  • 具体的な問題点として、フォームの値をPHPの$_POSTで受け取る方法がわからないことや、multipart/form-dataによる送信方法が複雑であることが挙げられます。また、サーバー処理を待たずにjavascriptが実行されてしまう場合があります。現在、どのように変更すればうまく動作するのかが分からないため、質問させていただきました。

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

  • ベストアンサー
  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.1

純粋な非同期でということならAJAXでやるしかないかと。(Flashとかはおいといて) レスポンスがHTMLだと困るけどファイル増殖は嫌、なら xxx.php?output=xml として出力形式を変えるとか。 見かけ上非同期でよくてAJAX使わないなら、 別ウィンドウとか埋め込みフレームで処理させといて 終わったら親ウィンドウの関数を呼ぶとか。 もっともアナログに、自身(PHP)に送信して 表示する際にJavascriptを書き換えるとか。 どれでもできそな気がしますけど、 そのページの目的というか内容によってチョイスできませんか?

suffix
質問者

補足

やはり、AJAXでやるしかないですか。 formの送信データをrequest.send("value="+document.getElementById("text"));のような形で送っていけば 確かにできそうですが、一度に送る内容が増えてくると徐々にプログラムの見た目が汚くなるのがどうも(汗。 ・【出力形式がoutput=xmlで出力形式を変えるとか】  こちらに関しては私の知識不足のためよく分からなかったのですが、responseXMLとは別物なんでしょうか?  レスポンスがhtmlだと困るというというよりはサーバー側で複数の処理に対してecho "----";と書き出すと、  どの結果がどの処理結果であるのかが分かりにくくなり、それを避けようと処理項目ごとに別プログラムにすると  PHPファイルが無駄に増えそうという意味でした。  説明不足でしたら済みません。 ・【埋め込みフレーム】  確かに別ウィンドウ開いて親ウィンドウ制御して、別ウィンドウを  閉じるといった方法とかも良いのですが、この場合にも  データの送信方法がwindow.open('yyy.php?x=x')みたいな形になって、  送信する物が多くなればなるほど指定を増やさないといけないのが大変そうで。  <form action="PHP">とした時に処理だけ指定先で、結果を反映するのは自身であるような方法があれば最高なのですが、  そんな都合の良い方法は無いでしょうか・・・。  後あまりajaxとかに詳しくないので、このようなごまかし?(orテクニック?)が色々出ているサイトがあれば  教えて欲しいですm(_ _)m   ・【アナログに送信】  <form action="自分.php">という形で自身に送信するとリロード  されてしまって、google map等だとsubmitボタンを押したときに  結果が反映されないのが困るんですよねー(>_<;) 

その他の回答 (1)

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.2

>一度に送る内容が増えてくると徐々にプログラムの見た目が汚くなる 書き方次第でしょう >PHPファイルが無駄に増えそうという意味でした。 PHPにパラメータなどを与えて出力形式を変更するという意味です。 取得した値を操作するならXMLかTEXTあたりでないと困ると思いますが 何をしたいのか知りませんので。 >データの送信方法がwindow.open('yyy.php?x=x') 開いたウィンドウにフォームからPOSTすればできると思いますが。 >submitボタンを押したときに結果が反映されないのが困る リロードしたあとに処理すればいいのでは? やろうとお思えばどれでもできると思いますが 具体的に何をしたいのか分かりません。 できそうにないならFlashでも勉強してみては? 非同期な処理など簡単に実装できますよ。

関連するQ&A