• ベストアンサー

javascript中の記述でのJSP文<%%>

javascriptの記述中に以下のような分岐文を作成しました。 ただこれを実行したところ、arrの値に関係なくソース下記に記述しているbbの値が代入されてしまいました。 条件によってどちらか片方だけを通り、片方だけを代入したいのですが可能でしょうか。 他の方法があればご教示お願いします。 if(arr[0].checked) <%a= "aa"; %> if(arr[1].checked) <%a= "bb"; %>

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

  • ベストアンサー
  • marutone
  • ベストアンサー率40% (70/174)
回答No.3

No.1です。 それは無理です。 サーバー側で動作して結果出力されたHTMLが、 クライアントのブラウザに出力されて、 その後にJavaScriptが動作しているので、 お望みの動作をさせるのは無理です。 私が最初の回答で記述した通り、 JavaScriptで出た結果をPOSTしてやるしか方法はありません。

その他の回答 (2)

回答No.2

javascriptはクライアントのブラウザ側で実行するものです。 JSPが実行されて、出力した結果をクライアント側に送信して、 クライアント側のブラウザはそれを解釈して実行しています。 決して同期しているものではありません。 javascript側からの条件分岐で、JSP側で処理したい場合、 非同期通信(Ajax(post/get))や、フォーム(post/get)やリンク(get)からサーバーに送られる 情報を元に、処理することになります。 質問の例のような場合、最も一般的なのは非同期通信で処理することでしょう。

force1
質問者

お礼

ライブラリ使用なしで非同期通信は可能なのでしょうか? 可能であれば教えて頂けますでしょうか。 またjavascriptの戻り値を画面に表示させるのではなく、javaの変数に代入することは可能でしょうか。

  • marutone
  • ベストアンサー率40% (70/174)
回答No.1

その動き(bbの値が代入される)で正しいです。 JavaScriptで条件分岐して、 サーバー側の処理を分岐することはできません。 正しく動作させるには、 arrの値をサーバーにPOSTして、 その値を基に条件分岐するのが正しいです。

force1
質問者

お礼

javascriptの戻り値を画面に表示させるのではなく、javaの変数に代入することは可能でしょうか。