2

オンライン試験のカウントダウン タイマーは、JavaScript を使用して実装されています。カウントダウンが 0:0:00 に達すると、ユーザーに警告が表示され、次の Web ページに進みます (以下を参照)。

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 フォームにオプションが表示されます (以下を参照)。 ここに画像の説明を入力

進むボタンをクリックすると、受験者の問題と解答(データテーブルに一時保存)がデータベースに保存されます。

ここでの問題は、カウントダウン タイマーがクライアント側のスクリプトによって実行され、データの挿入がサーバー側でコード化されていることです。いくつかの記事で読んだことに基づいて、データを挿入するJavaScript関数を作成することもできません.ASP.Netの概念に基づいているクライアント側のスクリプトを介してデータベースにアクセスすることはお勧めできません. . 誰かがこれを行うための良い方法を提案できますか? ありがとう。

4

1 に答える 1

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

注: ASP.NET AJAX ページ メソッド内の名前と値のペアを介してデータを渡すかdata: "{}",、JavaScript リテラルを作成してJSON.stringify()から、リテラルを JSON に変換するために使用できます。

分離コード:

[WebMethod]
public static string SaveToDatabase()
{
    // Save to database logic here
}
于 2013-11-15T04:15:39.523 に答える