做了一个客户端显示进度的功能
服务器端向客户端循环写入js
用Response.Write("<script language='javascript'>parent.window.labelid.innerText+='"+i+"'</script>")
显示错误:对象不cunzai
用 ClientScript.RegisterStartupScript(Me.GetType(), " ", "<script language='javascript'>parent.window.labelid.innerText+='"+i+"'</script>")不起作用,要等到循环结束 才执行
有没有什么好的方法 输出js到客户端即时执行的,谢谢

解决方案 »

  1.   

    你这思路有问题,服务器端向客户端循环写入js这本来就是不可操作的。
    正确的思路应该是请求第一次到达server端后,开启一个新线程,新线程负责读取进度和循环写当前session。
    主线程可以立即返回,不断异步请求当前session。
    具体实现请参考阿飞的文章。
    http://topic.csdn.net/u/20100727/10/6710495c-a47c-45ab-8cf2-bd8f57ac5d78.html
      

  2.   

            for (int i = 0; i < 5; i++)
            {
                Page.RegisterStartupScript(i.ToString(), "<script>aler('12');</script>");
            }楼主你可以这样尝试一下。每一次请求的type都必须不同,这样才能执行
      

  3.   

    我是在服务器端循环读数据,读一条,客户端的lable值就要加一,请问怎么做啊?
      

  4.   

    这个可以执行啊 我知道的 但是 ClientScript.RegisterStartupScript(Me.GetType(), " ", "<script language='javascript'>parent.window.labelid.innerText+='"+i+"'</script>")不起作用
      

  5.   

    楼主,你要理解http这种无状态协议的原理,正常情况下,你说的这种功能不可能实现。
      

  6.   

    进度条实现
    http://blog.csdn.net/net_lover/archive/2009/09/12/4546586.aspx
      

  7.   

    <script runat="server">  protected void Page_Load(object sender, EventArgs e)
      {
        Response.BufferOutput = true;
        for (int i = 0; i < 1000; i++)
        {
          Response.Write("<h1>"+i+"</h1>");
          Response.Write("<script>document.body.scrollTop=99999</"+"script>");
          Response.Flush();
        }
      }
    </script>