在线考试中的倒数计时器是使用JavaScript实现的。如果倒计时达到0:0:00,它会提醒用户并进入下一个网页(如下所示):
function myTimer(startVal,interval,outputId, dataField){
...
var current = this.value;
this.OutputCntrl.innerHTML = this.Hours(current) + ':' + this.Minutes(current) + ':' + this.Seconds(current);
this.currentTimeOut = setTimeout("Timer.go()", this.interval);
}
else {
window.alert("Time is up! Exam will proceed to next module.");
window.location = "Conf_English.aspx"
}
如果还剩下一些时间,选项会显示在网络表单中(如下所示):
单击“继续按钮”时,受检者的问题和答案(临时存储在数据表中)将存储在数据库中。
这里的问题是倒计时器由客户端脚本运行,数据插入在服务器端编码。我也不能制作一个将插入数据的javascript函数,因为基于我在一些文章中读到的内容,不建议通过客户端脚本访问数据库,我认为这是基于ASP.Net的概念。有人可以提出一个很好的方法吗?感谢。
答案 0 :(得分:1)
使用ASP.NET AJAX页面方法在Web服务器上调用static
(VB.NET中的Shared
)方法,如下所示:
标记:
// jQuery DOM ready function
$(document).ready(function() {
// Wire up click event handler for proceed button
$('.Proceed').click(function() {
$.ajax({
type: "POST",
url: "PageName.aspx/SaveToDatabase",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(result) {
// Navigate to next page or whatever needs to happen here
}
});
// Stop button from trying to post back to server
return false;
});
});
<asp:Button id="ButtonProceed" runat="server" Text="Proceed" CssClass="Proceed" />
注意:您可以通过data: "{}",
内的名称/值对将数据传递给ASP.NET AJAX页面方法,也可以构建JavaScript文字,然后使用JSON.stringify()
将文字转换为JSON。
代码隐藏:
[WebMethod]
public static string SaveToDatabase()
{
// Save to database logic here
}