2012-01-22 16 views
0

リンクをクリックしたときにトリガーするjavascript関数にオブジェクトを渡そうとしています。しかし、残念ながら私はそれを働かせることができません。ここでonclickイベントのjavascript関数でオブジェクトを渡します

は同じのための私のJSPファイルのコードです:ここで

<script type="text/javascript"> 
    $(document).ready(function() { 
     function tryToDoItTwice(obj) { 
      var check = obj; 
      if(check == null) { 
       return true; 
      } 
      else { 
       alert("You're not allowed to do this twice!"); 
       return false; 
      } 
     } 
    }); 
</script> 

<a href="<c:url value="/somepath" />" onclick="javascript: tryToDoItTwice(${foo});">Try to do it twice</a> 

fooはタイプFooのオブジェクトを参照します。

私はここで何が間違っているのか理解してくれますか?

EDITFooはJavaオブジェクトです。 ${foo}は、Foo javaオブジェクトを参照する参照変数です。

ありがとうございました。

+0

私はJQueryの前にJavascriptを学ぶと言います。 $ {foo}はそのような構文を見たことがありません。 –

+0

'$ {foo}'とは何ですか? –

+0

また、onclick属性の中に 'javascript'を入れる必要もありません。そして、私たちにエラーメッセージを与えてください。 –

答えて

1

JAVAオブジェクトをjavascriptに直接渡すことはできません。 JSON(オブジェクトをJSONに変換するためにGSONまたはJacksonを検索する)または関数に変数(オブジェクトではない)を渡す必要があります。

+0

おっと、私は明示的にそれを質問するべきだったと思う。ありがとう。 – skip

3

それは機能があなたの価値、それがクリックされています次の時間を格納していない(と呼ばれるたびに再宣言されますので、ローカルでその関数のスコープであるあなたのcheck変数。あなたは、変数の範囲を拡大する必要が

var check = null; 
    $(document).ready(function() { 
     function tryToDoItTwice(obj) { 
      check = obj; 
      if(check == null) { 
       return true; 
      } 
      else { 
       alert("You're not allowed to do this twice!"); 
       return false; 
      } 
     } 
}); 

fooが別の場所に存在する場合も、あなたはおそらくちょうどこのようにそれを渡したい:

<a href="<c:url value="/somepath" />" onclick="javascript: tryToDoItTwice(foo);">Try to do it twice</a>

+0

関数の名前で行かないでください。私は彼がクライアント側よりもサーバー側からクリック数を得ていると思う。 –

関連する問題