每5秒重新加载jquery JSON

时间:2013-04-17 16:36:05

标签: jquery json

我正在尝试创建一个动态列表视图,它每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');

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

2 个答案:

答案 0 :(得分: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);
});

答案 1 :(得分:1)

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

相关问题