【问题标题】:Session losing its state after javascript function calljavascript函数调用后会话丢失状态
【发布时间】:2012-04-17 00:38:28
【问题描述】:

我们使用的是 Sharepoint 2007 我们在页面加载时初始化会话变量 我们有一个 javascript 函数,如下所述

function backclick()
{
 __doPostBack('btnCaseSearch', 'Click'); 
alert('Select the Search Criteria.');
}

但是在调用它之后,我们正在失去会话价值。 如果我们删除 __doPostBack('btnCaseSearch', 'Click'); 然后每次页面加载但会话没有失去其价值时都会显示警报。 如何维护会话请帮助或建议 _doPostBack() 的替代方法

场景是这样的 下面的javascript函数

function backclick()
{
 __doPostBack('btnCaseSearch', 'Click'); 
alert(result not found.');
}

function check()
{
var btn ="<%=Session["search"]%>";
if(btn == "true")
{
do something
}
else
{
else part
}

下面的服务器端代码

Page_Load()
{
//initialise session variable
session["search"] = "true";
}
btnSearch_click()
{
 if(result not found)
{
this.Page.ClientScript.RegisterStartupScript(this.GetType(),"page_index_script1", "backclick();", true);

}
}

因此,当调用 backclick() javascript 函数时,会话将失去其状态,但如果 backclick() 没有被调用,则代码可以正常工作

谢谢

【问题讨论】:

  • 场景如下 javascript function function backclick() { __doPostBack('btnCaseSearch', 'Click'); alert('选择搜索条件。'); } function check() { if(session == "true") { do something } else { else part } 下面的服务器端代码 Page_Load() { //初始化会话变量 session["search"] = "true";所以当 backclick() javascript 函数在那个时候被调用时会话正在失去它的状态,但是如果 backclick() 没有被调用,那么代码就可以完美地工作

标签: c# javascript asp.net sharepoint session-state


【解决方案1】:

有什么让我跳出来的:

我们在页面加载时初始化会话变量

此页面是否加载服务器端

每次_doPostBack 都会导致 pageLoad 执行,所以我相信这是你覆盖会话变量的地方。

唯一的方式会话将失去它的状态是:

  • 如果它被覆盖或删除(使用断点检查您没有设置两次!)
  • 浏览器不会在后续请求中放弃 cookie

检查这两项,如果您的问题没有解决,请发布您发现的内容。

【讨论】:

  • 是页面加载在服务器端。我们在页面加载时为会话变量分配值说“true”,在 javascript 中我们正在检查会话值,但我们将会话值设为“null”而不是“true”
  • @Rushikesh - 你是如何在 javascript 中检查这个值的(因为会话变量通常不会出现在客户端上)
  • 下面是我们在javascript中检查会话值的代码 var btn ="";如果(btn ==“点击”){}
  • @Rushikesh 在这种情况下,我相信您正在重置页面加载
  • 是的,我们在 page_load 上设置它,但在 javascript 中它显示为 null
猜你喜欢
  • 2011-03-31
  • 1970-01-01
  • 2021-03-03
  • 2012-02-01
  • 2019-07-18
  • 2016-10-21
  • 1970-01-01
  • 2011-10-08
  • 1970-01-01
相关资源
最近更新 更多