0

テーブルのあるhtmlページがあります。簡略化すると、次のようになります。

<Row_ID>, <bla-bla-bla>, <_XXX.XX%_ is complete> 

C# には、ID で「% is complete」を評価する関数があります。ただし、操作には時間がかかる場合があります(即時ではなく、遅延が発生する場合があります)

ここで、1 ~ 2 分間隔でデータを更新する「% is complete」の自動更新を実装する必要があります。ページ全体もテーブル全体もリロードしたくありません(ajaxで行う場合)。ユーザーがページを見る可能性があり、再読み込みによって現在の位置 (またはテーブル内の行数) にブレーキがかかるためです。

だから私は、いくつかの関数を呼び出してサーバーから値を取得するjavascript setTimeoutについて考えます(JSONによって?)しかし、javascript関数がデータを要求するときのWebページのフリーズについてはわかりません。別の更新方法が存在する可能性がありますか?

バージョンや提案は大歓迎です!

壊れた英語で申し訳ありません。

4

1 に答える 1

1

これはあなたが意味することを達成するはずです。単一の呼び出しを行って、複数の結果の JSON 結果を返すことを想定しています (最も効率的です)。また、jQuery ajax呼び出しは非同期であるため、ページが「フリーズ」することはありません。また、MVC モデルのセットアップを推測するだけですが、その考えはわかりますか?

<table>
    @foreach(var line in Model)
    {
    <tr>
        <td>@line.Id</td>
        <td>@line.Something</td>
        <td id="p-@line.Id">@line.Percentage% complete</td>                   
    </tr>
    }
</table>

JS:

var to;
$().ready(function() {
    ResetUpdate();
});

function Update() {
    // do your $.ajax();
    // if success,
    // assuming return data is an array like:
    var data = [ {id:1, p:26}, {id:2, p:99} ];
    for(var i = 0; i < data.length; i++) {
        $('#p-' + data[i].id).html(data[i].p + '% complete');            
    }
    ResetUpdate();
}

function ResetUpdate() {
    to = setTimeout("Update()", 120000); //2 minutes
}

これが jsFiddleです。

于 2012-08-22T18:18:10.997 に答える