我正在使用一个简单的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>
答案 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;
}
}