怎么在javascript中获取Session的值?

qiudong_5210 2010-12-09 05:32:56
在JavaScript中怎么实时获取Session的值啊?我获取的值始终没有改变。
//显示数据
function showData(pages)
{
var TypesId=$("#ChooseTypesId").val();
$.getJSON("MessageBoardList.aspx?p="+pages+"&TypesId="+TypesId+"&w="+Math.random(),function(data){
var h = "";
$(data).each(function(i, MessageBoard) {
h +="<div class='b"+(i%2==0?3:4)+"'><ul>";
h+="<li class='line1'>"+MessageBoard.Id + "</li>";
h+="<li class='line5'>"+ MessageBoard.Title + "</li>";
h+="<li class='line5'>"+MessageBoard.Contents +"</li>";
h+="<li class='line3'>"+renderTime(MessageBoard.Times)+" </li>";
h+="<li class='line3'>"+MessageBoard.Users.LoginId+"</li>";
h+="<li class='line4'>"+"<a id='del' href="+"javascript:deleteOk("+ MessageBoard.Id+","+MessageBoard.UsersId+","+pages+")"+">删除</a></li></ul></div>";
var pagesAll1="<%=Session["MsgPagesAll"]%>";
});
h += "";
var pagesAll="<%=Session["MsgPagesAll"]%>";
$("#data").html(h);
$("#SessionValue").html("<input type='hidden' id='pagesSession' value='"+pagesAll+"' />");
$("#showPage").html(showPages(pages,pagesAll));

});
}
...全文
3756 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiudong_5210 2010-12-10
  • 打赏
  • 举报
回复
要求是无刷新页面
chen_ya_ping 2010-12-10
  • 打赏
  • 举报
回复
http://www.cnblogs.com/supersand/archive/2006/06/11/423111.html
chen_ya_ping 2010-12-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 koukoujiayi 的回复:]

将Session值放到一个隐藏域;
js读取这个隐藏域!
[/Quote]
这个是个方法,或者可以用COOKIE
C5662601 2010-12-10
  • 打赏
  • 举报
回复
你这个问题 最简单的办法刷新下页面 就好了
qiudong_5210 2010-12-10
  • 打赏
  • 举报
回复
我就是不知道怎么去做啊
polarissky 2010-12-10
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 qiudong_5210 的回复:]

我在后台改变的Session,在页面上有个下拉框,当下拉框的值发生改变时,调用ShowData()函数,在后台的Session中的发生改变了,可是在showData()函数中获取的Session没有改变
[/Quote]
你得到的是在页面加载时获取到的。你要在页面加载完成后,客户端动态调用,得用ajax。原理上你搞错了。
1楼孟老大说的很在理:Session是在服务器端的,你必须不停地去请求啊
qiudong_5210 2010-12-10
  • 打赏
  • 举报
回复
我在后台改变的Session,在页面上有个下拉框,当下拉框的值发生改变时,调用ShowData()函数,在后台的Session中的发生改变了,可是在showData()函数中获取的Session没有改变
newdigitime 2010-12-09
  • 打赏
  • 举报
回复
1. 后台session是怎么改变的? 不要说是通过JS来改变的
2. 即便你后台session改变了.你能否保证是同一个http会话? 不要说是另外打开一个浏览器窗口来改变session值的
3. 提除上面两点,你要在前台显示改变了的session,页面必须重新刷新或回发.
qiudong_5210 2010-12-09
  • 打赏
  • 举报
回复
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using System.Collections.Generic;
using Models;
using BLL;

public partial class MessageBoardList : System.Web.UI.Page
{
//留言集合
private List<MessageBoard> messageList;
public List<MessageBoard> MessageList
{
get { return messageList; }
set { messageList = value; }
}

//总页数
private int pagesAll;
public int PagesAll
{
get { return pagesAll; }
set { pagesAll = value; }
}

//页数
private int pages;
public int Pages
{
get { return pages; }
set { pages = value; }
}

private List<Types> typeList;

public List<Types> TypeList
{
get { return typeList; }
set { typeList = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
States state = StatesManager.GetStatesByStateName("正常");
int TypesId = Convert.ToInt32(Request.QueryString["TypesId"]);
int pageSize =10;
int count = MessageBoardManager.GetMessageBoardCount(1,TypesId);
this.PagesAll = (count % pageSize == 0) ? (count / pageSize) : ((count / pageSize) + 1);
if (Request.QueryString["p"]!= null)
{
this.Pages = Convert.ToInt32(Request.QueryString["p"]);
if (this.Pages <= 1)
{
this.Pages = 1;
}
else if (this.Pages >= PagesAll)
{
this.Pages = PagesAll;
}

}
else
{
this.Pages = 1;
}
Session["MsgPages"] = this.Pages;
Session["MsgPagesAll"] = this.PagesAll;

if (state != null)
{
this.MessageList = MessageBoardManager.GetMessageAll(Pages, pageSize,"StateId=1", "");
}
else
{
this.MessageList = MessageBoardManager.GetMessageAll(Pages,pageSize,"StateId=1","");
}
Response.Write(Newtonsoft.Json.JsonConvert.SerializeObject(MessageList));
}
}
  • 打赏
  • 举报
回复
贴asp.net无意义。如果你能学到一点自己诊断问题的技术,要好过互相贴代码。


那么你就应该知道该贴什么代码。你的代码执行时,根本没有回发asp.net,贴asp.net代码无意义。贴出来asp.net输出到浏览器上的代码才行(不过这时候你自己一看就懂了问题是怎么回事)。
qiudong_5210 2010-12-09
  • 打赏
  • 举报
回复
想在点击下拉框的时候,改变页面下方的页数
  • 打赏
  • 举报
回复
asp.net只是用来产生html的工具,要想调试客户端运行时问题(此根本不是进行asp.net回发),你是要看html而不是asp.net。
qiudong_5210 2010-12-09
  • 打赏
  • 举报
回复
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>留言板首页</title>

<script language="javascript" type="text/javascript" src="Scripts/jquery-1.3.2.min.js"></script>



<link href="Content/StyleSheet.css" rel="stylesheet" type="text/css" />
</head>
<body id="mybody" onload="showData(1)">
<div id="SessionValue">
</div>
<br /><br />
<div align="right" style="padding-right:80px">
<%
if(Session["Users"]==null)
{
%>
<a href="Login.aspx">登录</a>  <a href="Register.aspx">注册</a>
<%}else
{
Models.Users user=(Models.Users)Session["Users"];
%>
<a >欢迎您:  <%=user.LoginId %></a>
<%} %>
</div>
<div style="padding-left:150px">
请选择查看帖子的类别:<select name="ChooseTypes" id="ChooseTypesId" onchange="showData(1)">
<option value="0">全部</option>
<%
for (int i = 0; i < this.TypeList.Count; i++)
{
%>
<option value="<%=this.TypeList[i].Id %>">
<%=this.TypeList[i].TypeName %>
</option>
<%} %>
</select>
</div>
<div class="b2">
<ul>
<li class="line1">ID</li>
<li class="line5">标题</li>
<li class="line5">内容</li>
<li class="line3">发布时间</li>
<li class="line3">发帖人</li>
<li class="line4">操作</li>
</ul>
</div>
<!--显示数据的开始-->
<div id="data">
</div>
<!--显示数据的结束-->
<!--显示页数的开始-->
<div class="page" id="showPage">

</div>
<!--显示页数结束-->
<form id="myform" name="myform" method="post" action="javascript:validateInput()">
<div class="b5">
<div class="b5_t">
<div>
题目:<input type="text" name="Title" id="Title" />
</div>
内容:
<textarea name="Contents" id="Contents" cols="" rows=""></textarea>
<div>
类别:<select name="TypesId" id="TypesId">
<%
for (int i = 0; i < this.TypeList.Count; i++)
{
%>
<option value="<%=this.TypeList[i].Id %>">
<%=this.TypeList[i].TypeName %>
</option>
<%} %>
</select>
</div>
</div>
<div class="b5_v">
<%
if(Session["Users"]!=null)
{
%>
<input name="" type="submit" value="提交" />
<%}else
{ %>
<input name="" type="submit" value="提交" disabled="false" />   <font color="red">登录后可用</font>
<%} %>

</div>
</div>
</form>
</body>
</html>

<script language="javascript" type="text/javascript">
//添加
function validateInput(){
var Title=$("#Title").val();
var contents=$("#Contents").val();

if(Title==""||Title==null)
{
alert("请输入标题");
return;
}
else if(contents==""||contents==null)
{
alert("请输入内容");
return;
}
else
{
$.post("doAdd.aspx",{"Title":$("#Title").val(),"Contents":$("#Contents").val(),"TypesId":$("#TypesId").val()},function(data){
if(data=="ok"){
var pages=$("#pages").val();
showData(pages);
alert("添加成功!");

}
else
{
alert("添加失败!");
}
});
}
}

//删除
function deleteOk(id,UsersId,pages)
{
if(confirm('确认要删除吗?(邮件将会删除到垃圾箱里!)'))
{
$.post("doUpdateState.aspx",{"Id":id,"UsersId":UsersId},function(data){
if(data=="ok")
{
alert("删除成功!");
showData(pages);
}else if(data=="no")
{
alert("您无权限删除该贴!");
}else if(data=="noUser")
{
alert("请先登录");
}else{
alert("删除失败!");
return ;
}
})
}
else
{
return;
}
}

//显示分页
function showPages(pages,pagesAll)
{
var a= $("#pagesSession").val();
var t="";
t+="<a href='javascript:showData(1)'>首页</a>";

for(var i=1;i<=pagesAll;i++)
{
t+=" <a href='javascript:showData("+i+")'>["+i+"]</a>";
}
t+="";
var num=pages+1;
if(num>=pagesAll)
{
num=pagesAll;
}
return t+=" <a href="+"javascript:showData("+num+")"+">下一页</a>";
}

//显示数据
function showData(pages)
{
var TypesId=$("#ChooseTypesId").val();
$.getJSON("MessageBoardList.aspx?p="+pages+"&TypesId="+TypesId+"&w="+Math.random(),function(data){
var h = "";
$(data).each(function(i, MessageBoard) {
h +="<div class='b"+(i%2==0?3:4)+"'><ul>";
h+="<li class='line1'>"+MessageBoard.Id + "</li>";
h+="<li class='line5'>"+ MessageBoard.Title + "</li>";
h+="<li class='line5'>"+MessageBoard.Contents +"</li>";
h+="<li class='line3'>"+renderTime(MessageBoard.Times)+" </li>";
h+="<li class='line3'>"+MessageBoard.Users.LoginId+"</li>";
h+="<li class='line4'>"+"<a id='del' href="+"javascript:deleteOk("+ MessageBoard.Id+","+MessageBoard.UsersId+","+pages+")"+">删除</a></li></ul></div>";
});
h += "";
var pagesAll='<%=Session["MsgPagesAll"]%>';
alert(pagesAll);
$("#data").html(h);
$("#SessionValue").html("<input type='hidden' id='pagesSession' value='"+pagesAll+"' />");
$("#showPage").html(showPages(pages,pagesAll));

});
}



//json时间转换
function renderTime(data){
var da = eval('new ' + data.replace('/','','g').replace('/','','g'));
return da.getFullYear()+"-"+ da.getMonth()+"-" +da.getDay()+"-" +da.getHours()+":"+da.getSeconds()+":"+da.getMinutes();
}

function aaa()
{


}
</script>
  • 打赏
  • 举报
回复
[Quote=引用楼主 qiudong_5210 的回复:]
在JavaScript中怎么实时获取Session的值啊?我获取的值始终没有改变。
//显示数据
function showData(pages)
{
var TypesId=$("#ChooseTypesId").val();
$.getJSON("MessageBoardList.aspx?p="+pag……
[/Quote]

动用你的html/javascript知识,看看浏览器端的html源代码,javascript到底执行什么代码?
qiudong_5210 2010-12-09
  • 打赏
  • 举报
回复
qiudong_5210 2010-12-09
  • 打赏
  • 举报
回复
var pagesAll='<%=Session["MsgPagesAll"]%>';改成这样也不行
qiudong_5210 2010-12-09
  • 打赏
  • 举报
回复
我在页面上是调用的showData这个方法,后台的Session["MsgPagesAll"]是改变的,可是前台的没有改变啊
whowhen21 2010-12-09
  • 打赏
  • 举报
回复
你要想变化的话,只能用Ajax定时请求了~~
whowhen21 2010-12-09
  • 打赏
  • 举报
回复
var pagesAll="<%=Session["MsgPagesAll"]%>";
改成
var pagesAll='<%=Session["MsgPagesAll"]%>';
koukoujiayi 2010-12-09
  • 打赏
  • 举报
回复
将Session值放到一个隐藏域;
js读取这个隐藏域!
加载更多回复(1)

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧