0

这是我所拥有的:

 <body>
        <div id="TableContainer"></div>
        <script type="text/javascript">
            $(document).ready(function() {
                $('#TableContainer').jtable({
                    title: 'title',
                    actions: {
                        listAction: 'JSONServlet',
                    },
                    ajaxSettings: {
                        type: 'POST',
                        dataType: 'json'
                    },
                    fields: {
                        Id: {
                            key: true,
                            list: false
                        },
                        Tag: {
                            title: 'Tag',
                            width: '40%'
                        },
                        V: {
                            title: 'V',
                            width: '10%'
                        },
                        S: {
                            title: 'S',
                            width: '10%'
                        },
                        Timestamp: {
                            title: 'Timestamp',
                            width: '30%',
                            create: false,
                            edit: false
                        }
                    }
                });
                $('#DeviceTableContainer').jtable('load');
      ///////     window.setTimeout("$('#DeviceTableContainer').jtable('reload')", 100);
            });

        </script>
    </body>

我正在使用jTable,除了我的 setTimeout 方法外,一切正常。在萤火虫中,它看起来可以发出两次请求。我假设曾经是正常请求和我的方法中的另一个请求,但在第二次之后不再有请求。我是网络开发的新手,所以如果你能快速解释一下我做错了什么,那也会有所帮助。

4

3 回答 3

3

如果您希望它每 x 秒刷新一次,那么您需要 setInterval 或在 setTimeout 调用的函数中对 setTimeout 的另一个调用

var timerID = setInterval("$('#DeviceTableContainer').jtable('reload')", 100);

或者

var timerID = null;
function doReload() {
     $('#DeviceTableContainer').jtable('reload');
     timerID = setTimeout(doReload,100);
}

doReload();

用于timerID保存对计时器的引用并在需要时取消计时器clearTimeout(timerID),,clearInterval(timerID)

虽然你每隔 0.1 秒调用一次,因为这个数字是毫秒,所以这对于进行 ajax 调用来说非常快。

于 2013-06-26T13:47:44.920 回答
1

setTimeout只触发一次。

setInterval反复触发,直到您致电clearInterval

于 2013-06-26T13:48:54.993 回答
0

试试这个(100 毫秒后):

window.setTimeout(function(){$('#DeviceTableContainer').jtable('reload');}, 100);

或者这个(每 100 毫秒):

window.setInterval(function(){$('#DeviceTableContainer').jtable('reload');}, 100);
于 2013-06-26T13:48:31.433 回答