在jsp页面中java代码获取js里面var变量的值

JavaScript021

在jsp页面中java代码获取js里面var变量的值,第1张

js与java是不同语言,运行在不同环境下,因此无法直接获得对方数据。

java运行在服务器端,在同一个jsp文件中,java先运行,js后运行,java可以生成一段js代码,保证js运行得到相应的结果,因此可以用java定义js变量的方式来传递数据,例如:

<script>

var url="<%=url%>"

alert(username)

</script>

上面例子,<%%>中的内容会在服务器端运行,在“”中间输出网址,浏览器就会加载下面的结果:

<script>

var url="gif8.cn"

alert(url)

</script>

这部分就是标准的js代码了。

说明:在JSP中;Java部分是在服务器端执行的;js部分是在客户端的浏览器执行的;二者完全不相干。因此直接在JSP页面上是无法在js、java和HTML变量之间进行调用的。

变通(解决方案):将js变量放到form中的一个;在后台从form中取出变量放到隐藏域中;然后提交表单给要调用变量的页面。这个页面可以就是本身。示例如下:

bb.jsp页面:

<% String test5 = (String)request.getAttribute("test4")%>

<script type="text/javascript">

var test1 = '111'//定义js变量

document.form.test2.value = test1

//将js变量的值放到form中的一个隐藏域中

var formObj = document.getElementById('passForm')

formObj.submit()

</script>

<form method="post" action="aa.jsp" id ="passForm">

<input id = 'test2' type = 'hidden' name="test2">

</form>

aa.jsp页面中的Java代码:

<%

request.setCharacterEncoding("utf-8")

String txtMsg = request.getParameter("test2")

out.println(txtMsg)

%>

注:如果同一个页面自己给自己传值,aa.jsp和bb.jsp可以为同一页面。

Java的变量值,理论上在js中是不能获取,但是可以通过间接的方式来获取。

提供两种思路供参考:

1、把java变量的值存在cookie中,js通过cookie去取;

function getCookie(name)

{

var arr,reg=new RegExp("(^| )"+name+"=([^]*)(|$)")

if(arr=document.cookie.match(reg))

return unescape(arr[2])

else

return null

}

var value= getCookie("cookie的name名")

2、把java变量的值赋值给页面中<input type="hidden"/>的value,通过js去取;

var value=document.getElementById("hidden的ID").value