jQuery on Click没有为ajax调用时重置变量

时间:2014-05-17 02:05:17

标签: javascript php jquery ajax

我有一个ajax调用,从javascript获取当前时间,将其作为var发送到PHP文件,PHP将JSON对象返回给JS,在页面加载时间和现在之间发布任何内容。 (想想SO或Twitter ...... 31个新帖子。点击加载。)

此时Ajax调用每10秒触发一次,初始检查正常。但是当我点击加载时似乎没有设置正确的时间,因为它仍然会在下次调用时显示相同的新帖子。由于某种原因,它会在2或3次呼叫后停止。

我想知道我是不是正确设置了变量范围,或者我是否遗漏了一些明显的东西。

//this time var works fine
lastchecked = new Date();
$(document).ready(function()
{       
    setInterval(function() 
    {   
        $.ajax(
        {
            type: 'POST',
            url: 'index.php?page=getposts',
            data: { lastchecked : lastchecked },
            dataType:'json',
            success: function (data) 
            {
                var obj = data.length;
                if (obj > 0) 
                {
                    $('#messages').html('<div class="alert alert-info"><a href="#" id="newPosts">' + obj + ' new posts.  Click to load.</a></div>');
                    $('#newPosts').click(function() 
                    {                       
                        $.each(data, function(i, item) 
                        {       
                            if(typeof item == 'object') 
                            {
                                $('#posts').append('<div class="user"> <a href="#" class="clearfix"> <img src="'+item.thumbnail+'" class="thumbnail"> <h4>'+item.post_time+'</h4></a></div>');                  
                            }
                        });

                        $('#messages').empty(); 
                        //this time var doesn't get reset until 2 or 3 calls later
                        lastchecked = new Date();
                        alert(lastchecked);
                        return false;
                    });
                }
            }
        });
    }, 10000);
});

我的PHP如果需要:

$lastchecked = strtotime($lastchecked);
$lastchecked = date('Y-m-d H:i:s', $lastchecked);
$sth = $dbh->prepare("SELECT * FROM post WHERE post_time > :lastchecked ORDER BY post_time DESC"); 
$sth->execute(array(':lastchecked' => $lastchecked));   

0 个答案:

没有答案