アプリ版:「スタンプのみでお礼する」機能のリリースについて

jspファイルで、JvaScriptを組み込みscriptで
document.getElementById("id_name").innerHTML="<%~%>";
にして、"<%~%>"にJavaの文を書きこみたいと考えていますが上手くいきません。
どうすれば良いでしょうか?

【プログラム】
<select name="table_name2">
<script>
function show_tables()
{
var database_name = document.getElementsByName("database").value;
document.getElementById("option").innerHTML

="<% con = DriverManager.getConnection(\"jdbc:mysql://localhost/"+database_name+"\",\"user_name\",\"pass\");"
+"stmt = con.createStatement();"
+"rs=stmt.executeQuery(\"show tables\");"
+"ArrayList<String>list2=new ArrayList<String>();"
+"while(rs.next())"
+"{"
+"list2.add(rs.getString(\"Database\"));"
+"}"
+"con.close();"
+"stmt.close();"
+"int tables_size = list2.size();"
+"for(int k=0; k < tables_size; k++)"
+"{"
+"out.println(\"<option value=\"+list2.get(k)+\">\"+list2.get(k)+\"</option>\");"
+"}"
+"%>";
}
</script>
<div id='option'></div>

</select>

A 回答 (2件)

<% ~ %> で囲まれた部分は、Java から見ると……



……と解答しようとして、ソースをよく見たら javaScript の変数の値を JSP で利用しようとしていますが、このようなことはできません。

JSP の処理はサーバーで行われ、ブラウザに送られてくるときには JSP のコードは HTML から消えています。
一方、JavaScript の処理はサーバーから HTML が送られた後でブラウザ上で行われます。

つまり、JSP が処理を行おうとしているときには JavaScript の処理はまだ動作していないので、その変数の値を参照しようと思ってもその値が確定していません。
    • good
    • 0
この回答へのお礼

ご説明聞いて、何故できなかったのか自分なりは腑に落ちました。

【考えた解決案】
前もってサーバー側で、出力する可能性のあるものは全て書き出すが、非表示にして、
それをJavaScriptで条件に応じて、必要なもののみを非表示解除という方法で試みたいと思います。

有難うございます。

お礼日時:2014/02/14 18:27

こんにちは。



どの部分がサーバ側で処理されて、どの部分がクライアント側で実行されるかをきちんと理解すると、動作しない原因がみえてくると思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!