0

我正在尝试制作一个动态列表视图,它每 5 秒重新加载一次更改。它在第一次加载时完美加载,但我的 setinterval 工作不正常。它每 5 秒运行一次,但即使进行了更改,它也不会更新我的菜单?

这是我到目前为止得到的:

$(document).on('pageshow', function (){
    var userid=1;
    $.mobile.loading('show');
    $.getJSON("http://mypage.com/playermenu.php?callback=?&userid="+userid,          
        function(data){
            var content = []
            $.each(data , function(i,val){

                content.push(val.list);

            });

            $("#games").html(content.join(""));
            $('#games').listview('refresh');

            $.mobile.loading('hide');

        });
});

setInterval(function(){ 
    $.mobile.loading('show');
    $.getJSON("http://mypage.com/playermenu.php?callback=?&userid="+userid,          
        function(data){
            var content = []
            $.each(data , function(i,val){

                content.push(val.list);

            });

            $("#games").html(content.join(""));
            $('#games').listview('refresh');

            $.mobile.loading('hide');

        }); 
}, 5000);

$.mobile.loading('show'); 5 秒后开始但没有到达 $.mobile.loading('hide');

任何帮助表示赞赏并提前感谢:-)

4

2 回答 2

2

var user_id与超时功能在不同的范围内。将超时放在文档就绪块中,问题就解决了。此外,请考虑重构代码以避免过多重复并提高可维护性。例如:

$(document).on('pageshow', function () {
    var userid = 1,
        url = 'http://mypage.com/playermenu.php?callback=?&userid=' + userid,
        callback = function (data) {
            var content = [];
            $.each(data, function (i, val) {
                content.push(val.list);
            });
            $('#games').html(content.join('')).listview('refresh');
            $.mobile.loading('hide');
        },
        fetchData = function () {
            $.mobile.loading('show');
            $.getJSON(url, callback);
        };
    fetchData();
    setInterval(fetchData, 5000);
});
于 2013-04-17T16:43:55.837 回答
1

我认为您的 user_id 变量在 setInterval 的匿名函数中可能不可见。

于 2013-04-17T16:39:03.270 回答