如何在MVC中使用Ajax每秒刷新页面?

Los*_*ost -1 ajax asp.net-mvc-3

我想在我的页面中创建一个机制,以便它使用Ajax每秒刷新一次表数据.我怎样才能做到这一点?

tva*_*son 8

假设您有一个控制器操作将表作为局部视图返回,您可以使用:

<script type="text/javascript">
    $(function() {
        setInterval(loadTable,1000);  // invoke load every second
        loadTable(); // load on initial page loaded
    });

    function loadTable() {
        $('#tablecontainer').load( '/controller/tabledata' );
    }
</script>

<div id="tablecontainer">
</div>
Run Code Online (Sandbox Code Playgroud)

您的tabledata操作将返回包含该表的部分视图.

 <table>
    <thead>...</thead>
    <tbody>...</tbody>
 </table>
Run Code Online (Sandbox Code Playgroud)

编辑通过点击处理程序建立(省略脚本标签)

$(function() {
     var timer;
     $('#enableCheckbox').change( function() {
         if ($(this).find(':checked').length) {
             timer = setInterval(loadTable,1000); // set up timer
             loadTable();
         }
         else if (timer) { // stop the interval timer
             clearInterval(timer);
             timer = null;
         }
     });
 });

 function loadTable() {
     $('#tablecontainer').load( '/controller/tabledata #innercontainer' );
 }
Run Code Online (Sandbox Code Playgroud)

完整视图(至少包含以下内容)

 <div id="tablecontainer">
 <div id="innercontainer">
 <table>
    <thead>...</thead>
    <tbody>...</tbody>
 </table>
 </div>
 </div>
Run Code Online (Sandbox Code Playgroud)

  • 使用Ajax响应回调是一个好主意,然后(在回调内)设置一个新的`setTimeout(loadTable,1000);`.这样,如果某些Ajax请求需要更长的时间,浏览器就不会爆炸`:P` (3认同)