2013-11-15 39 views
2

在線考試中的倒數計時器使用JavaScript實現。如果倒計時到達0:0:00,它向用戶發出警報,並前進到下一個網頁(如下圖所示):javascript定時器完成後調用服務器端子sub

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" 
            } 

如果仍有一些剩餘時間,選擇顯示在Web表單(如下所示): enter image description here

當繼續按鈕被點擊時,考生的問題和答案(臨時存儲在數據表中)將被存儲在數據庫中。

這裏的問題是倒數計時器正在由客戶端腳本運行,並且數據的插入在服務器端進行編碼。我也不能創建一個JavaScript函數來插入數據,因爲根據我在某些文章中讀到的內容,通過客戶端腳本訪問數據庫不是明智之舉,我認爲這是基於ASP.Net 。有人可以提出一個好的方法來做到這一點?謝謝。

回答

1

使用ASP.NET AJAX頁面方法來調用Web服務器上的staticShared在VB.NET)方法,像這樣:

標記:

// 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: "{}",內部的名稱/值對,或者您可以創建JavaScript文字,然後使用JSON.stringify()將文字轉換爲JSON。

代碼隱藏:

[WebMethod] 
public static string SaveToDatabase() 
{ 
    // Save to database logic here 
} 
+0

我現在明白了。我現在已經研究了這種方法約2天了。謝謝。我可以再問一個問題先生嗎?我將如何訪問gridview數據並將其放在我的vb.net中的共享方法中? – eirishainjel

+0

@eirishainjel - 它不願提問背誦問題,請提出一個新問題,該問題顯示了由這個問題所做出的代碼變化,然後明確說明了您的下一個目標。在單個問題中提出更多問題只會讓水變得混濁,並且使稍後任何人都很難回答這些問題並找到他們正在尋找的信息。 –