从JavaScript读取JSPvariables
我如何从JavaScript读取/访问JSPvariables?
alert("${variable}");
要么
alert("<%=var%>");
或完整的例子
<html> <head> <script language="javascript"> function access(){ <% String str="Hello World"; %> var s="<%=str%>"; alert(s); } </script> </head> <body onload="access()"> </body> </html>
注意:在渲染之前清理input,可能会打开大量的XSS可能性
最清洁的方式,据我所知:
- 将您的JSPvariables添加到HTML元素的data- *属性
- 然后在需要时通过Javascript读取这个值
我对这个SO页面上的当前解决scheme的看法:在实际的javascript代码中使用java scriplet来“直接”读取JSP值可能是你可以做的最令人厌恶的事情。 让我想呕吐。 哈哈。 严重的是,尽量不要这样做。
没有JSP的HTML部分:
<body data-customvalueone="1st Interpreted Jsp Value" data-customvaluetwo="another Interpreted Jsp Value"> Here is your regular page main content </body>
使用JSP时的HTML部分:
<body data-customvalueone="${beanName.attrName}" data-customvaluetwo="${beanName.scndAttrName}"> Here is your regular page main content </body>
javascript部分(为简单起见使用jQuery):
<script type="text/JavaScript" src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.js"></script> <script type="text/javascript"> jQuery(function(){ var valuePassedFromJSP = $("body").attr("data-customvalueone"); var anotherValuePassedFromJSP = $("body").attr("data-customvaluetwo"); alert(valuePassedFromJSP + " and " + anotherValuePassedFromJSP + " are the values passed from your JSP page"); }); </script>
这里是jsFiddle在行动中看到这个http://jsfiddle.net/6wEYw/2/
资源:
- HTML 5 data- *属性: https : //developer.mozilla.org/en-US/docs/Web/Guide/HTML/Using_data_attributes
- 将JavaScript包含到html文件中包含 HTML文件中的JavaScript文件不会像<script …. />一样工作
- CSSselect器(通过jQueryselect时也可用) https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_started/Selectors
- 通过jQuery获取HTML元素属性http://api.jquery.com/attr/
假设你正在讨论HTML文档中的JavaScript。
你不能直接这样做,因为就JSP而言,它正在输出文本,就页面而言,它只是获得一个HTML文档。
你必须生成JavaScript代码来实例化variables, 注意在JS中转义任何具有特殊含义的字符 。 如果你只是转储数据(如其他答案所build议的),那么当数据包含新行,引号字符等时,将会发现数据正在翻倒。
最简单的方法是使用JSON库(在http://json.org/的底部列出一堆),然后获得JSP输出:;
<script type="text/javascript"> var myObject = <%= the string output by the JSON library %>; </script>
这会给你一个对象,你可以访问像:
myObject.someProperty
在JS。
<% String s="Hi"; %> var v ="<%=s%>";
首先java脚本是客户端脚本语言,而jsp是你不能访问的服务器端语言,在服务器端处理客户端语言的任何variables而不发送请求到服务器,只有在服务器接收到请求后才能访问客户端语言variables所以只有通过请求的方法
另一件事是“如何将这些variables发送到服务器”有两个选项…既可以使用隐藏的字段,也可以使用js的用户window.location对象……
`window.location.replace("home.jsp?nm="+v);` `<%String name=request.getParameter("nm");%>` window.location.href("home.jsp?nm="+v); <%String name=request.getParameter("v");%>
那么你可以在jsp上访问客户端数据