每隔5秒重新加载jquery JSON

每隔5秒重新加载jquery JSON,jquery,json,Jquery,Json,我正在尝试制作一个动态listview,它每5秒钟重新加载一次更改。它在首次加载时完全加载,但我的设置间隔工作不正常。它每5秒运行一次,但即使已经做了更改,它也不会更新我的菜单 以下是我到目前为止得到的信息: $(document).on('pageshow', function (){ var userid=1; $.mobile.loading('show'); $.getJSON("http://mypage.com/playermenu.php?callback=

我正在尝试制作一个动态listview,它每5秒钟重新加载一次更改。它在首次加载时完全加载,但我的设置间隔工作不正常。它每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.load('show');5秒后开始,但未到达$.mobile.loading('hide')


感谢您的帮助:-)

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

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

var user\u id
在超时函数的不同范围内。将超时放在document ready块中,问题就解决了。此外,考虑重构代码以避免重复太多,提高可维护性。例如:

$(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);
});

var user\u id
与超时功能位于不同的范围内。将超时放在document ready块中,问题就解决了。此外,考虑重构代码以避免重复太多,提高可维护性。例如:

$(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);
});

你应该认真考虑重构你的代码你有没有遇到任何控制台错误?在“show”遍历每一行之后,您是否尝试过console.log(“test”),以查看哪一行(如果有的话)出错?您将重复相同的代码块两次。将它放在一个函数中,并根据需要从多个位置调用该函数。你应该认真考虑重构你的代码,你有没有遇到控制台错误?在“show”遍历每一行之后,您是否尝试过console.log(“test”),以查看哪一行(如果有的话)出错?您将重复相同的代码块两次。将它放在一个函数中,并根据需要从多个位置调用该函数。以这种方式维护的代码更少。哦,是的。。。这就成功了。不知道你在重构方面遇到了什么?你能解释一下吗。通过重构,我们基本上是指我所做的:消除所有的重复,并将其压缩成更易于维护的块。哦,是的。。。这就成功了。不知道你在重构方面遇到了什么?你能解释一下吗?通过重构,我们基本上是指我所做的:消除所有重复,并将其压缩成更易于维护的块。