请问:javascript 如何新建一个类的对象 如:work w = new work()

有项目需要解决一个问题

东找找西找找还是找回到了园子里


http://lovecherry.cnblogs.com/archive/2006/03/30/135060.html

这位兄弟的文章很好的解决了我的问题 在此表示感谢

但是每隔几秒刷新一次,我想改成Ajax方式

以下我修改后的内容:

//目的:调用runwork()后,dowork()不断改变currentstatus值,再用GetCurrentStatus()取得currentstatus值,并显示在Label1中
//结果:不成功,runwork()后,dowork()是改变了currentstatus的值,但再次调用GetCurrentStatus()后currentstatus又被初始化了。
//痛苦啊,不知道哪位知不知道,在javascript中有没有像后台代码一像 新建一个类的对象 如:work w = new work()

<script>
function Start()
{
    work.runwork();
    GetCurrent();
}

function GetCurrent()
{
    work.GetCurrentStatus(get_Current_Result_CallBack);
    window.setTimeout("GetCurrent()",10000);
}

function get_Current_Result_CallBack(response)
{
    document.all("Label1").length = 0;
    document.getElementById("Label1").innerText = response.value;
}

</script>

<form id="Form1" method="post" runat="server">
<asp:label id="lab_state" runat="server"></asp:label><br>
<asp:Button id="btn_startwork" runat="server" Text="运行一个长时间的任务"></asp:Button>
<a href="javascript:Start();void(0);">Submit</a>
</form>

后台

先是一些类的申明:
protected System.Web.UI.WebControls.Button btn_startwork;
protected System.Web.UI.WebControls.Label lab_state;
//前面2个是vs.net自己生成的
protected work w;

在Page_Load里面输入以下代码:

Ajax.Utility.RegisterTypeForAjax(typeof(work));


另外建立一个任务类,代码如下:

public class work
 {
  public int State=0;//0-没有开始,1-正在运行,2-成功结束,3-失败结束
        public DateTime StartTime;
  public DateTime FinishTime;
  public DateTime ErrorTime;
    public string currentstatus="test";


 

[Ajax.AjaxMethod]

  public void runwork()
  {
   lock(this)//确保临界区被一个Thread所占用
   {
    if(State!=1)
    {
     State=1;
     StartTime=DateTime.Now;
     System.Threading.Thread thread=new System.Threading.Thread(new System.Threading.ThreadStart(dowork));
     thread.Start();                        
    }
   }
  }

  private void dowork()
  {
   try
   { 
    int count = 5;
    for(int i=0;i<count;i++)
    {
        currentstatus = "第"+i+"条数据";
                Thread.Sleep(2000);
    }
    State=2;
   }
   catch
   {
    ErrorTime=DateTime.Now;
    State=3;
   }
   finally
   {
    FinishTime=DateTime.Now;
   }
  }
 

[Ajax.AjaxMethod]

public string GetCurrentStatus()
{
    return current;
}
}
}



 

 

posted @ 2006-05-15 14:58  CooS  阅读(1312)  评论(0编辑  收藏  举报