在onclick事件中传递javascript函数中的对象

时间:2012-01-22 05:19:23

标签: javascript jquery jsp jstl

我正在尝试将对象传递给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类型的对象。

有人可以帮我理解我在这里做错了吗?

编辑Foo是一个java对象。 ${foo}是引用Foo java对象的引用变量。

感谢。

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:1)

您无法将JAVA对象直接传递给javascript。您需要返回JSON(查找GSON或Jackson以将对象转换为JSON)或将变量(非对象)传递给函数。