0

JSPを使用してサイトを作成しています。以下にコードスニペットを含めました。

私が抱えている問題は、ページが読み込まれるたびaddBookmark()にjavascript内のメソッドが実行されますが、アラートが表示されないことです。ボタンを押すとアラートが表示されますが、addBookmark()メソッドが呼び出されません。この奇妙な振る舞いの原因は何ですか?

<% User user = new User() %>
<script type="text/javascript">
   function add()
   {
      <% user.addBookmark(); %>                               
      alert("addBookmark");
   }
</script>

<button type="button" style="float: right" onclick="add()">Bookmark</button>

よろしくお願いします!

4

2 に答える 2

3

JSPのすべてのコマンドがサーバーで実行されるため、ページが読み込まれるときにJSPが実行されます。代わりに、Javascriptはブラウザでのみ実行されます。

つまり、サーバーがページを作成し、関数を実行してからページを出力していることがわかります。この機能はJavaScript内にありません。少なくとも、JavaScriptコード自体を出力していない場合はそうではありません。

ボタンをクリックすると、jspコードはすでに実行されています。その瞬間にコードを実行したい場合は、jspではなくjavascriptでコードを記述するか、別のリクエストを使用してコードを呼び出す必要があります。

于 2012-04-22T18:59:30.360 に答える
3

JSPはブラウザと直接通信しないため、またブラウザがページをどのように処理し、ユーザーが何を実行するかについての知識もありません。これは、コードをウォークスルーしてを探す単純なインタープリターです<%<%間にあるすべてのコード%>が実行され、残りは単にブラウザに書き込まれます。つまり、JavaScriptはJSPインタープリターによって読み取られず、サーバーはブックマークを追加するだけです。

あなたが探しているのは、実際にブックマークを追加するためのサーバーへのリクエストです。mypage.jsp?addBookmark=trueブックマークを追加するようなもの。

于 2012-04-22T18:59:31.043 に答える