[英]How to call action from Controller in JavaScript Timer
這是我的新計時器:
var eventDate = new Date(Date.parse(new Date) + 3600);
function countdown() {
var elapsed = Date.parse(eventDate) - Date.parse(new Date());
var seconds = Math.floor((elapsed / 1000) % 60);
var minutes = Math.floor((elapsed / 1000 / 60) % 60);
minutes = (minutes < 10) ? "0" + minutes : minutes;
seconds = (seconds < 10) ? "0" + seconds : seconds;
return {
'minutes': minutes,
'seconds': seconds,
'total': elapsed
}
}
function initializeClock() {
var minutes = document.getElementById('minutes');
var seconds = document.getElementById('seconds');
var timeInterval = setInterval(function() {
minutes.innerHTML = countdown().minutes;
seconds.innerHTML = countdown().seconds;
if(minutes.equals(0) && seconds.equals(0))
{
timeInterval().stop();
$.ajax({
url: "Finish/Test",
type: 'POST',
success: function (result) {
if (result.success) {
$('#htmlElement').html(result.htmlElement);
}
}
});
}
},1000);
}
initializeClock();
<h2>@ViewBag.Title</h2>
<div id ='hmtlElement'>
....以此類推
[HttpPost]
public ActionResult Finish(ExamineTest examineTest)
{
var question = examineTest.Question.ToList();
_questions.AddRange(question);
_testService.SaveSolvedTest(examineTest);
return Json(new { success = true, htmlElement = RedirectToAction("Preview", "Test") });
}
[HttpGet]
public ActionResult Preview()
{
SolvedTest solvedTest = _testService.GetSolvedTest();
SolvedTestModel solvedTestModel = EntitySolvedTestConverter.ToModel(solvedTest);
return View("Finish", solvedTestModel);
}
您可以使用ajax和json(例如@Bharat)來完成此操作。 這是可以調用控制器的ajax方法的代碼段。
function countdown(){
// checking your minute second logic
if(minute second equals 0)
//var firstName = textbox where name is stored
//var list = listbox where list is stored.
var url = "Test/Finish?" + firstName + "&" + list;
// url looks like Test/Finish?John&ListofElements
$.ajax({
url: url,
type: 'POST',
success: function (result) {
if(result.success){
$('#htmlElement').html(result.htmlElement);
}
}
});
}
在上面,您可以使用一些MVC路由作為URL。
控制器可以看起來像這樣。
[HttpPost]
public ActionResult Finish(ExamineTest examineTest)
{
var question = examineTest.Question.ToList();
_questions.AddRange(question);
_testService.SaveSolvedTest(examineTest);
SolvedTest solvedTest = _testService.GetSolvedTest();
SolvedTestModel solvedTestModel = EntitySolvedTestConverter.ToModel(solvedTest);
return Json(new { success = true, htmlElement = View("Finish", solvedTestModel)});
}
然后根據您的邏輯。 當分鍾和秒等於0時,只需調用此方法。
<body>
<h2>@ViewBag.Title</h2>
<div id='htmlElement'>
<!-- ..... stuff .... -->
<!-- end of html form -->
</div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.