- ベストアンサー
HTMLとPHPのデータのやり取りで問題発生
- HTMLのフォームでデータを送信し、PHPスクリプトが処理すると画面が真っ白になる問題が発生しています。
- HTMLのフォームから送信されたデータをPHPスクリプトが受け取り、データファイルを作成する処理は正常に動作しています。
- HTMLの画面は表示したままで、バックグラウンドでPHPが処理する方法がわかりません。助けていただける方、お願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
フォームをどう記録したいのかよくわかりませんが、以下簡単なajaxサンプルです <table border="1"> <tr> <td> <form method="get" action="attenuate.php"> <input type="button" value="submit" onclick="ajaxFn('1:1')"> <input type="hidden" value="01" name="1:1"> </form> </td> <td> <form method="get" action="attenuate.php"> <input type="button" value="submit" onclick="ajaxFn('2:1')"> <input type="hidden" value="10" name="2:1"> </form> </td> <td> <form method="get" action="attenuate.php"> <input type="button" value="submit" onclick="ajaxFn('5:1')"> <input type="hidden" value="11" name="5:1"> </form> </td> <td> <form method="get" action="attenuate.php"> <input type="button" value="submit" onclick="ajaxFn('Amplify')"> <input type="hidden" value="00" name="Amplify"> </form> </td> </tr> </table> <div id="ajaxmessage"></div> <script language="javascript"> <!-- function ajaxFn(name){ var elm = document.getElementsByName(name)[0]; name = encodeURIComponent(name); var ajaxval = encodeURIComponent(elm.value); var xmlHttp; xmlHttp = new XMLHttpRequest(); xmlHttp.open("GET", "attenuate.php?select="+name+"&value="+ajaxval, false); xmlHttp.send(null); document.getElementById('ajaxmessage').innerHTML=xmlHttp.responseText; } //--> </script> ↓attenuate.php <?php #$_GET['select']と$_GET['value']を受け取っている。 $fp=fopen("attenuation.txt","w"); switch($_GET['select']) { case '00': fwrite($fp,"00");break; case '00': fwrite($fp,"01");break; case '00': fwrite($fp,"10");break; case '00': fwrite($fp,"11");break; } fclose($fp); echo "記録されました"; ?>
その他の回答 (3)
- b0a0a
- ベストアンサー率49% (156/313)
Ajaxかiframeformでしょうね
お礼
早速のご回答有難うございます。 iframeform というのはまだ使ったことがありません。 今から研究してみようと思います。
- Tasuke22
- ベストアンサー率33% (1799/5383)
PHPから同じページを吐き出してから作業を行う、というのはダメですか?
お礼
早速のご回答、有難うございます。 サーバーにつながれたオシロスコープからの波形データを、インターネットを経由してリアルタイムでブラウザーの画面に表示するものですが、PHPから同じページを吐き出すというのは、画面が結構込み入っているため、時間がかかりそうな気がします。かくかくがくがくした表示にはしたくないのです。
フォームを送信してしまったらそうなります。フォームの送信を禁止し、JavaScriptのスクリプトを使って、フォームの内容をサーバーにAjax通信で送信し、受信結果を表示するようにします。JavaScriptやAjaxはわかりますか? そのへんについて勉強してみてください。 参考ページ http://libro.tuyano.com/index3?id=50003
お礼
早速のご回答、ありがとうございます。 これは学校のプロジェクトの一部としてやっているものですが、オシロスコープのプローブから入力されたアナログ波形をデジタル変換してサーバーのメモリに格納し、それをAjaxで取得してブラウザー画面に表示するプログラムです。 クライアント側はもちろんJavaScriptを使っています。 問題の部分は、ユーザーがブラウザーの画面から選択した減衰率によってオシロスコープ側のスイッチを切り替えるためのもので、その選択に応じた数値を表すファイルをサーバーに作り、サーバー側ではCを使ってマイクロコントローラー(Raspberry PI)でその数値を読み取るプログラムにしてあります。 submit ボタンではなく普通のボタンにして、JavaScript でdocument.forms["f1"].submit() も試してみましたが結果は同じでした。 今までも何度かAjaxを使ってきましたが、サーバーにデータを送るのに使ったことはありませんでした。 できればそのあたりをもう少し詳しく教えていただけないでしょうか? よろしくお願いします。
お礼
ご回答有難うございます。 掲載頂いたプログラムリストを自分の状況にあわせて手直して試してみましたら、うまくHTML画面を表示したままPHPでファイルを作ることが出来ました。 ベストアンサーにさせていただきます。