日期:2014-05-17  浏览次数:20683 次

请教个JQUERY.HTML()的小问题
trhidden.jsp

HTML code


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

//String isproxystr = request.getParameter("isproxy");
boolean isproxy = false;
session.setAttribute("Power",5);
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    <title>My JSP 'trhidden.jsp' starting page</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <script type="text/javascript" src="js/jquery.js"></script>
    <script type="text/javascript" src="js/trhidden.js"></script>
  </head>
  
  <body>  
  <table id="tt" border="1 red solid" > </table>
  </body>
</html>




trhidden.js
JScript code

function showtt(){
    $("#tt").html(
            '<tr <%=session.getAttribute("Power").equals(5)?"style=\'display:none\'":"" %> >'
            +'<td colspan="12" style="text-align: right"><input type="button" id="excel" value="excel" onclick="alert(\'haha\')"/></td>'
    +"</tr>"
    +"<tr>"
    +"<td>name</td><td>age</td><td>sax</td>"
    +"</tr>"
    +"<tr>"
    +"<td>tys</td><td>22</td><td>nan</td>"
    +"</tr>"
    
    ); 
}



返回到浏览器的源码为什么是
<tr <%=“session.getAttribute("Power").equals(5)?"style=\'display:none\'":"" ” %> >
好像是将表达式里面的内容变成了一个String了

------解决方案--------------------
你得搞清楚页面加载的顺序,并且js文件内的服务器代码是不可能被读取到的

加载一个jsp页面->
服务器部分:读取jsp->转换jsp代码为servlet->获取处理结果到html格式->
客户端部分:加载head中的远程代码,包括css,js->执行js代码->浏览器展示页面

读取js文件的动作发生在客户端,所以里面的服务器代码不会被执行

解决方案:
1.把js代码写到jsp文件的<script>标签里
2.用ajax后置加载数据,用js返回数据
------解决方案--------------------
JS是下载到客户端,由浏览器进行解析的!

JSP是服务端通过应用服务器转换成class二进制代码进行操作的。

你使用JSP中的内置对象SESSION,在JS中肯定不识别的!

如果你想获得SESSION值,可以在JS使用AJAX间接访问调取JSP或者ACTION中的SESSION值咯!