日期:2014-05-18  浏览次数:20588 次

为什么在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属性的值,本页面不刷新也是得不到的。