asp.net中js调用服务端方法,服务端调用JS,实现无刷新的倒计时

基本思路是通过JS获取客户端的时间传递给asp.net,再与asp.net获取到的服务器(或者数据库的)时间进行比较

得到2者的差值,再返回一个 [目标时间+差值]  让客户端去刷新,当用户点击的时候,服务器再进行判断是否有效,接下来就简单了

 

1、在JS文件里使用

document.getElementById('Button1').click();

 

在button1_click事件中定义所需的方法

2、在JS给服务端控件传值

document.all.txt1.value=timeString;

其中txt1为服务器控件

 

    <script language="JavaScript" type="text/javascript">
function showtime(){
var year,month,day,hours,minutes,seconds,ap;
var intYear,intMonth,intDay,intHours,intMinutes,intSeconds;
var today;
today=new Date();
intYear=today.getYear();
intMonth=today.getMonth()+1;
intDay=today.getDate();
intHours=today.getHours();
intMinutes=today.getMinutes();

if(intHours<10)
{
intHours="0"+intHours;
}

if(intMinutes<10)
{
intMinutes="0"+intMinutes;
}
if(intSeconds<10)
{
intSeconds="0"+intSeconds;
}


intSeconds=today.getSeconds();

timeString=intYear+"-"+intMonth+"-"+intDay+" "+intHours+":"+intMinutes+":"+intSeconds;
document.all.txt1.value=timeString;
document.getElementById('Button1').click();

    </script>

 

 

3、在服务端调用JS文件的方法

 CallJavaScript(Me, "showtime()")

 

 Public Shared Sub CallJavaScript(ByVal page As Page, ByVal FunName As String)
        Dim StrScript As New StringBuilder
        StrScript.Append("<script language=javascript>")
        StrScript.Append(FunName)
        StrScript.Append(";")
        '  StrScript.Append("('" & str & "');")
        StrScript.Append("</script>")
        If Not page.IsStartupScriptRegistered("Call" & FunName) Then
            page.RegisterStartupScript("Call" & FunName, StrScript.ToString())
        End If
    End Sub

 

 

4、通过以上的互相传值计算客户端的时间与服务器的时间比较完成差值计算再传回去从而实现秒杀团购等无刷新的倒计时方案

这样对于服务器的负荷小,不使用其它AJAX框架

 

定义JS


var now = new Date();
function createtime(mubiaotime,weizhi){
var grt= new Date(mubiaotime);
now.setTime(now.getTime()+250);
days = (grt - now) / 1000 / 60 / 60 / 24;
dnum = Math.floor(days);

hours = (grt - now) / 1000 / 60 / 60 - (24 * dnum);
hnum = Math.floor(hours);

if(String(hnum).length ==1 ){hnum = "0" + hnum;}
minutes = (grt - now) / 1000 /60 - (24 * 60 * dnum) - (60 * hnum);
mnum = Math.floor(minutes);
if(String(mnum).length ==1 ){mnum = "0" + mnum;}

seconds = (grt - now) / 1000 - (24 * 60 * 60 * dnum) - (60 * 60 * hnum) - (60 * mnum);
snum = Math.round(seconds);
if(String(snum).length ==1 ){snum = "0" + snum;}


if (dnum<0) {dnum=0;hnum=0;mnum=0;snum=0; }
document.getElementById(weizhi).innerHTML = dnum +"天"+ hnum + "小时"+ mnum + "分"+ snum+ "秒";
}
 

 

5、引用JS

<script language="javascript" src="djs.js"></script>

6、根据参数ID获取传递值 实现倒计时  Chr(34) 为双引号

Response.Write("<div class='Bjday' id='daojishi" & Request.QueryString("id") & "'></div>")

Response.Write("<Script language='JavaScript'>setInterval(" & Chr(34) & "createtime('" & temptime & "','daojishi" & Request.QueryString("id") & "');" & Chr(34) & ",250);</Script>")

7、通过IFRAME完成调用

<iframe src="daojishi.aspx?id=12" scrolling="no"  border="0" frameborder="0" width=200 height=30></iframe> 

 

 

 

这是我自己摸索的一条实现倒计时的方法,可能有很多不完善的地方,主要是一条思路

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值