- ベストアンサー
フォームの送信ボタンの処理について
- フォームの送信ボタンが押されたとき、JavaScriptのonSubmitイベントでPHPの変数に値を代入しても反映されない場合があります。
- JavaScriptのテキストでは、return文を使って値を返すことができますが、その戻り値は他の場所でどのように受け取るのかについて疑問があります。
- フォームのsubmitイベントでJavaScriptで設定した変数をPHPのスクリプトで受け取る方法についてわかりません。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> PHP側で、<input type="hidden" id="hidden_value" name="pushsubmit" value="0"> > この文で、value=1 ではないんでしょうか? > value=0 だとうまく動作しませんでした。 どう書いてうまく動作しなかったのか分かりませんが、 これは初期値として0を設定しているだけです。 ここを1にすると、onsubmit内で1に設定する意味が無くなってしまいます。 #1の回答で、 if(isset($_POST['pushsubmit'])){ $pushsubmit = $_POST['pushsubmit']; }else{ $pushsubmit = '0'; } としましたが、pushsubmitが数値になるようにしたい場合は if(isset($_POST['pushsubmit'])){ $pushsubmit = (int)$_POST['pushsubmit']; }else{ $pushsubmit = 0; } としてください。
その他の回答 (2)
- nda23
- ベストアンサー率54% (777/1415)
Webアプリケーションはクライアントのリクエストに対し、1回レスポンスしたら終わりです。 インターラクティブな処理はできません。つまり、クライアントのイベントなどという観念は ありません。Web側(PHP)プログラムは受身で、画面の内容を一度に受け取るだけです。 受け取れるのはテキストボックス、チェックボックス、ラジオボタンなどのコントロールの 内容です。ということは「1をPHPで受け取る」ためにはこの値をテキストボックスだとか Hidden(不可視のテキストボックスみたいなもの)に入れてあげればよいでしょう。 テキストボックスがフォーカスを受け取った時に背景色を変えるなどと言うイベントを扱う 処理はクライアントサイドJavaScriptで行います。 繰り返しますが、Webアプリの開発者はVBのようなインターラクティブな処理はできない ことを心しておかなければなりません。こういう条件下でインターラクティブな処理の ように振舞うための技術を覚えて下さい。例えば2画面に渡る入力画面があるとすれば、 2画面目には1画面目の入力項目をHiddenに記録して持ち込んでおく必要があります。 こうしないと2画面目のSubmitで2画面分のデータが揃いません。 その他にクライアントサイドJavaScriptやAJAX(サーバ・クライアント間の非同期通信)も 必須の技術です。
お礼
詳しいご説明を頂き、どうも有難うございました。
- Picosoft
- ベストアンサー率70% (274/391)
(1)PHPはサーバ側で実行されるプログラムで、JavaScriptはクライアント側で実行されるプログラムです。 実行されるPCが違うので、リアルタイムで変数のやりとりをすることはできません。 (2)onsubmitやonclick内でreturn false;とすると、submitやclickをなかったことにできます。 戻り値を設定しないか、return true;とすると、通常通りsubmitやclickが処理されます。 (return 1;はreturn true;と等価ですが、普通はreturn 1;となんて書きません) (3)(1)でも述べたとおり、PHPとJavaScript間で変数のやりとりを直接行うことはできません。 hiddenタグなどを使ってJavaScriptの変数の値をPOSTし、PHPで$_POSTを参照して値を受け取ってください。 ☆HTML側 <form name="form1" method="post" action="bbs.php" onsubmit="showdlgbox(); document.getElementById('hidden_value').value='1';"> <input type="hidden" id="hidden_value" name="pushsubmit" value="0"> ☆PHP側(bbs.php) if(isset($_POST['pushsubmit'])){ $pushsubmit = $_POST['pushsubmit']; }else{ $pushsubmit = '0'; }
お礼
詳しいご解説、どうもありがとうございました。
補足
PHP側で、 <input type="hidden" id="hidden_value" name="pushsubmit" value="0"> この文で、value=1 ではないんでしょうか? value=0 だとうまく動作しませんでした。
お礼
補足の説明をくださり、どうもありがとうございました。 大変参考になりました。