个人观点:
    ajax所引起的页面的变化,可以简单的等同于js脚本引起的变化.页面的ViewState并没有记录这些变化.按F5刷新,引起整个页面的回传.会根据ViewState重绘此页面.所以用ajax取得的数据就不会保存下来了!

解决方案 »

  1.   

    谢谢xc_lw(汪汪) ,那如何用ajax取得的数据就保存下来呢?
      

  2.   

    ??
    不太明白搂主的意思哈ajax前台读取数据,F5刷新又是重新Load,那是要掉啊
      

  3.   

    F5 刷新就没办法了,除非你保存到session后,load的时候先检查
      

  4.   

    我把代码帖出:
    [AjaxPro.AjaxMethod]

    public string returndata()
    {   
    System.Threading.Thread.Sleep(2000);
    string str1 ="select * from shuaxin where id='1'";
    SqlConnection sqlcon=Das.GetConnect();
    sqlcon.Open();
    SqlCommand sqlcom=new SqlCommand(str1 ,sqlcon);  
    SqlDataReader dr=sqlcom.ExecuteReader();
    if(dr.Read())
    {
     ss= dr["title"].ToString();

    }
    sqlcon.Close();
    return ss;
    }
    前台:
    <a href="javascript:rea();void(0);">ddd</a>
    function rea(){ 
       wushuaxin.WebForm6.returndata(returndata_callback); 

     function returndata_callback(res) 

     var ds = res.value;
    document.getElementById("TextBox1").value=ds;

    大家有个法吗?
      

  5.   

    用某种手段记录下用户的操作,可以在URL中设置额外的信息.
      

  6.   

    <a href="javascript:rea();void(0);">ddd</a>
    获取识别Cookie;
    if(document.referrer==""&&识别Cookie==1)
    {
       rea();
    }
    function rea(){ 
       wushuaxin.WebForm6.returndata(returndata_callback); 
       保存识别Cookie为1;

     function returndata_callback(res) 

     var ds = res.value;
    document.getElementById("TextBox1").value=ds;

      

  7.   

    既然页面viewstate里没有记录你的值,那就显示的写进去,刷新时全postback时,应该就不会丢失了。不过,服务器控件不是都有个EnableViewState吗,你没设true?
      

  8.   

    可不可把那个取数据的逻辑写到<body onload="">里 传一个值var _index
    等于0时不去取,当这个值被设置成1时,就去取,取得的数据再填到label里
      

  9.   

    ajax本就是反传统的,不一样的模式
      

  10.   

    好像以前ajax保存状态通过设置url的,看看能不能借鉴一下
      

  11.   

    HeddaZ(大飞飞) 说的是
    但肯定有办法啊,有的网站 按 F5刷新也能保存啊
      

  12.   

    label控件不保存ViewState的
    建议将label改成TextBox控件,将textbox的样式设置一下和label一样就解决了
      

  13.   

    楼上,不行的,我原来就是textbox
      

  14.   

    textbox不行,我晕了,我做了N种这样的了
    一点问题没有,刷新后值还在,是否存在其他问题
      

  15.   

    TO:wang520d(Q)
    不应该。。什么?
      

  16.   

    把ajax得到的值保存下来
    上面提到的保存在COOKIE,挂URL参数,就是通过其他方式把值保留下来
      

  17.   

    ajax的后退按钮无效,有时感觉还是不方便
      

  18.   

    你用session保存试试,听说ajax上保存session有问题,但我用微软的asp.net ajax却是没有问题
      

  19.   

    ajax的刷新和后退都有一点问题,支持得了ie,却不一定能支持firefox。问题太多,最好不要考虑
      

  20.   

    当你使用ajax获取信息的时候修改window.location.href后面的参数的值(把获取的信息添加到URL中),然后在服务器端接受此参数。
    没有测试过!!
    or
    修改页面中隐藏的viewstate的信息。(这个没有仔细看过,所以不清楚怎么改,自己查一下吧)
      

  21.   

    or
    使用cookie,在页面加载的时候每次都获取它
      

  22.   

    重写个js 把刷新方法重写了或者把 window.onunload()方法重写了  只刷新你指定地方的数据 其他要保留的地方不刷新也可以屏蔽刷新 自己写个刷新按钮 放到叶面上
    <script   language=javascript>   
      function   document.onkeydown()   
      {   
          if   ((event.keyCode==8)     ||                                   //屏蔽退格删除键   
                  (event.keyCode==116)||                                   //屏蔽   F5   刷新键   
                  (event.ctrlKey   &&   event.keyCode==82)){   //Ctrl   +   R   
                event.keyCode=0;                                     
              event.returnValue=false;   
                }   
      }   
      </script>   
      然后<body   onContextMenu="window.event.retrunValue=false">//屏蔽MOUSE右 
      

  23.   

    原因很简单   F5刷新 会重新调用当前页面 向LABEL的VALUE 不返回服务器的话就会丢失
    最简单的改成服务器控件   
    AJAX只是用户体验 不必太着魔了
      

  24.   

    告诉楼主一个解决方案吧http://blog.csdn.net/lx1988cyk/archive/2007/05/24/1623829.aspx我的毕业设计就是这么解决的..
      

  25.   

    URL,ViewState,Cookie,这么多可用的临时存页面信息的东西,挑着用吧。注:Cookie可以用js控制。http://......#...对ie有效,firefox会拿不到。
      

  26.   

    http://......#...FF下当然也有效的....
      

  27.   

    我用VS 2005写的时候就没拿到,不知道是不是我的机器问题,害得我写了一段判断浏览器的代码来兼容,不是IE浏览器就用QueryString传递.
      

  28.   

    刷新了要保存?页面已经重新加载了.跟AJAX有关吗?如果你还想保存你要借一个容器来先保存,然后再读取!这样不是很麻烦???
      

  29.   

    用了ajax就最好限制用户使用F5刷新页面上很多内容可能是经过多次操作后的内容,如果全都记录到cookie或者session中,将非常复杂,并且要根据页面数据的展示方式做大量初始赋值
      

  30.   

    不清楚为什么要保存Ajax的值
    刷新再拉数据库,我也这么做的window.onload=pageinit;
    function pageinit()
    {
      //data init
    }