将youtube嵌入到异步自动更新新闻Feed中

时间:2012-05-07 22:35:37

标签: php javascript ajax

我正在使用一个简单的AJAX脚本集来每5秒执行一次,以显示来自sql表的所有新闻源。一切正常,但是当我想将YouTube视频嵌入到文章中时,它会每5秒重新加载一次。

有没有办法解决这个问题?

这是我的脚本......'updatedStories.php'基本上从我的Feed表中提取所有数据并回复它。

<script>
//get AJAX xmlhttp
function getAJAX(){
    var xmlhttp;
    if(window.XMLHttpRequest) { // IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    } else { // IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    return xmlhttp;
}
//ajax example
function updateStories(){
    var xmlhttp = getAJAX();

    xmlhttp.onreadystatechange=function() {
        if(xmlhttp.readyState==4 && xmlhttp.status==200) {
            document.getElementById("stories").innerHTML=xmlhttp.responseText;
        }
    }
    xmlhttp.open("POST","updatedStories.php",true);
    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    xmlhttp.send();
}
updateStories();
setInterval("updateStories()",5000);
</script>   

2 个答案:

答案 0 :(得分:1)

您正在使用数据库中的新内容替换故事。这意味着您每次都在创建新的YouTube嵌入 - 因此重新加载问题。您需要更改页面的工作方式。不要每五秒钟获取所有当前商店,而应考虑仅获取自上次更新以来新/更改的故事。不幸的是,它是一个比当前代码更具参与性的解决方案。

答案 1 :(得分:0)

我设法让它发挥作用! 我正在使用jQuery来添加新帖子,所以现在它们按顺序排列。

这是我的代码: javaScript

//get AJAX xmlhttp
function getAJAX(){
    var xmlhttp;
    if(window.XMLHttpRequest) { // IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    } else { // IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    return xmlhttp;
}

setInterval(function (){
    var xmlhttp = getAJAX();

    xmlhttp.onreadystatechange=function() {
        if(xmlhttp.readyState==4 && xmlhttp.status==200) {
            //document.getElementById("stories").innerHTML=xmlhttp.responseText + document.getElementById("stories").innerHTML;
            jQuery("#main_section div#stories").prepend(xmlhttp.responseText);
        }
    }
    xmlhttp.open("POST","updatedStories.php",true);
    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    xmlhttp.send();
},5000);

比脚本添加新帖子:

        function update(){
            $query = 'SELECT * FROM stories WHERE time > \''.$_SESSION['last_time'].'\' ORDER BY time DESC ';
            $result = mysql_query($query);
            $num = mysql_num_rows($result);
            $first = true;
            while($rows = mysql_fetch_array($result)){

            $time = $rows['time'];
                if ($first) {
                    $_SESSION['last_time']=$time;
                        $first = false;     
                }
                $title = $rows['title'];
                $user_id =$rows['user_id'];
                $content = $rows['content'];
                display($title,$time,$user_id,$content);
                $_SESSION['last_time']=$time;
            }

        }