簡體   English   中英

如何在JavaScript Timer中從Controller調用操作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM