我正在尝试将对象传递给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对象的引用变量。
感谢。
答案 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)或将变量(非对象)传递给函数。