请问: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;
}
}
}