为什么在js文件中不能获得session.getAttribute("name")的值
我用JBuilder2006 新建了一个jsp文件:
<%@ page contentType= "text/html; charset=GBK " %>
<html>
<head>
<title>
菜鸟试验用,请高手指教
</title>
</head>
<%!
String str;
%>
<%
session.setAttribute( "name ", "这是初始值 ");
str=(String)session.getAttribute( "name ");
%>
<script language= "javascript " type= "text/javascript ">
function show(){
<%session.setAttribute( "name ", "这是通过javascript改变后的值 ");%> ;
var s= " <%=session.getAttribute( "name ")%> ";
alert(s);
}
</script>
<body onload= "show() " bgcolor= "#ffffff ">
<h1>
<%=str%>
</h1>
</body>
</html>
这样运行jsp文件是可以的,不过我现在想把javascript保存在js文件中,再调用就不行,这是为什么呀?(问题很菜,不要BS我,谢谢!!!)
------解决方案--------------------session 是jsp的内建对象,运行在服务器端,js运行在浏览器端,js当然不能够修改session的指啦
------解决方案--------------------那就不要放在js文件里了
------解决方案--------------------js是浏览器端的,session在服务器端
------解决方案-------------------- <script language= "javascript " type= "text/javascript " src= "session.jsp "/>
//session.jsp内容.
document.write 'function show(){ <%session.setAttribute( "name ", "这是通过javascript改变后的值 ");%> ;var s= " <%=session.getAttribute( "name ")%> ";alert(s);} ';
------解决方案--------------------我觉得你应该先理清你的思路,要写得代码很简单,如下所示:
function show(){
var name= <%=Session.getAttribute( "name ");//来自服务器
var name0=document.form[0].name.value; //从页面得到
if(name.equals( "name0 ")){
alert( "message ");
//进行你所要的操作
return true;
}else{
return false;
}
return false;
}
代码大体上是这样的。
------解决方案--------------------= " <%=session.getAttribute( "name ")%> ";改为= " <%=(String)session.getAttribute( "name ")%> ";试试
------解决方案--------------------纯属钻牛角尖
------解决方案--------------------js是浏览器端的,session是服务器端,放在一起的时候,都当作jsp一起编译了,分开后,就不编译了
------解决方案--------------------只有.JSP或.JAVA的文件才能使用SESSION这类的JSP的对象。
.JS是不会被编译的?明白了?
------解决方案--------------------当页面被载入后 session.getAttribute( "name ")的值就不会被改变,也就是说用js是不会改变jsp的session属性的值的,即使用ajax调用其它页面或是后台程序改变了session属性的值,本页面不刷新也是得不到的。