Php 两个相互冲突的循环JS函数

Php 两个相互冲突的循环JS函数,php,javascript,jquery,loops,Php,Javascript,Jquery,Loops,因此,我有两组JavaScript函数,它们不断地支持我的服务器,并且,如果数据库已经更新,这些函数会做一些事情。这两组函数彼此无关;他们唯一的关系是他们同时发生。然而,由于某种原因,一个功能与另一个相冲突。我的代码是这样的: <!DOCTYPE html> <html> <head> <title>Stage</title> <link href="stage.css" rel="stylesheet" type="text/c

因此,我有两组JavaScript函数,它们不断地支持我的服务器,并且,如果数据库已经更新,这些函数会做一些事情。这两组函数彼此无关;他们唯一的关系是他们同时发生。然而,由于某种原因,一个功能与另一个相冲突。我的代码是这样的:

<!DOCTYPE html>
<html>
<head>
<title>Stage</title>
<link href="stage.css" rel="stylesheet" type="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js"></script>
<script type="text/javascript">

 ///////////////////// FUNCTION SET 1 

function loadThumbnail(){
  $.ajax({
    url: 'process_stage_show.php',
    data: 'value=<?php echo $_GET["session"]; ?>',       
    dataType: 'json',                           
    success: function(data){
      var idCurrent = data[0];
      var idVideo = data[1];
      var idSession = data[2];
      var state = data[4];
      if (state ==  1) {
        $('#tv').html('<img src="http://i.ytimg.com/vi/'+ idVideo +'/hqdefault.jpg" width ="800" height="533"/>');
        setTimeout(function(){timedCount2(idCurrent);},1000);
      }
      else {
        setTimeout(function(){timedCount2(idCurrent);},1000);
      }
    }
  });
}

function timedCount2(idCurrent){
  $.ajax({                                      
    url: 'process_stage_show.php',                
    data: 'value=<?php echo $_GET["session"]; ?>',       
    dataType: 'json',
    success: function(data) {  
      var idNew = data[0];  
      var idVideo = data[1];
      var idSession = data[2];          
      var state = data[4];          
      if (!(idCurrent == idNew)) {
        window.location.reload();
      }
      else{
        setTimeout(function(){timedCount2(idCurrent);},1000);
      }
    } 
  });
}

 ///////////////////// FUNCTION SET 2 

function loadStage(){
  $.ajax({
    url: 'process_stage_play.php',            
    data: 'value=<?php echo $_GET["session"]; ?>',       
    dataType: 'json',                               
    success: function(data){                    
      var idVideo = data[0];        
      var idCurrent = data[1];
      var idSession = data[2];
      var state = data[4];
      if (state ==  2) {
        //alert("State equal to 2. Do nothing.");
        setTimeout(function(){timedCount(idCurrent);},1000);
      }
      else if (state == 1) {
        //alert("State equal to 1. Open window.");
        popupwindow = window.open ("http://www.youtube.com/watch_popup?v="+ idVideo);
        setTimeout(function(){timedCount(idCurrent);},1000);
      }
      else if (state == 0) {
        //alert("State equal to 0. Close window.");
        popupwindow.close();
        setTimeout(function(){timedCount(idCurrent);},1000);
      }
    }
  });
}

function timedCount(idCurrent){
  $.ajax({                                      
    url: 'process_stage_play.php'             
    data: 'value=<?php echo $_GET["session"]; ?>',
    dataType: 'json',                               
    success: function(data) {  
      var idVideo = data[0];  
      var idNew = data[1];
      var idSession = data[2];          
      var state = data[4];          
      if (idCurrent == idNew) {
        setTimeout(function(){timedCount(idCurrent);},1000);
      }
      else{
        //alert("ID has changed. Re-load stage.");
        loadStage();
      }
    } 
  });
}

</script>
</head>

<body onload="loadStage(); loadThumbnail();">

<div id="tv"></div>

</body>
</html>

阶段
/////////////////////功能集1
函数loadThumbnail(){
$.ajax({
url:'process\u stage\u show.php',
数据:“值=”,
数据类型:“json”,
成功:功能(数据){
var idCurrent=数据[0];
var idVideo=数据[1];
var idSession=数据[2];
var状态=数据[4];
如果(状态==1){
$('#tv').html('');
setTimeout(函数(){timedCount2(idCurrent);},1000);
}
否则{
setTimeout(函数(){timedCount2(idCurrent);},1000);
}
}
});
}
函数timedCount2(idCurrent){
$.ajax({
url:'process\u stage\u show.php',
数据:“值=”,
数据类型:“json”,
成功:函数(数据){
var idNew=数据[0];
var idVideo=数据[1];
var idSession=数据[2];
var状态=数据[4];
如果(!(idCurrent==idNew)){
window.location.reload();
}
否则{
setTimeout(函数(){timedCount2(idCurrent);},1000);
}
} 
});
}
/////////////////////功能集2
函数loadStage(){
$.ajax({
url:'process\u stage\u play.php',
数据:“值=”,
数据类型:“json”,
成功:函数(数据){
var idVideo=数据[0];
var idCurrent=数据[1];
var idSession=数据[2];
var状态=数据[4];
如果(状态==2){
//警报(“状态等于2.什么也不做”);
setTimeout(函数(){timedCount(idCurrent);},1000);
}
else if(state==1){
//警报(“状态等于1.打开窗口”);
popupwindow=window.open(“http://www.youtube.com/watch_popup?v=“+idVideo);
setTimeout(函数(){timedCount(idCurrent);},1000);
}
else if(state==0){
//警报(“状态等于0。关闭窗口”);
popupwindow.close();
setTimeout(函数(){timedCount(idCurrent);},1000);
}
}
});
}
函数timedCount(idCurrent){
$.ajax({
url:'process\u stage\u play.php'
数据:“值=”,
数据类型:“json”,
成功:函数(数据){
var idVideo=数据[0];
var idNew=数据[1];
var idSession=数据[2];
var状态=数据[4];
if(idCurrent==idNew){
setTimeout(函数(){timedCount(idCurrent);},1000);
}
否则{
//警报(“ID已更改。重新加载阶段”);
loadStage();
}
} 
});
}
我不想太详细地介绍这些函数集的功能(除非有人要求),因为我不希望这篇文章太长。但问题是这两组函数本身都可以正常工作,但由于某种原因,如果同时运行它们,第二个函数集会一直说,当state等于0时,popupwindow未定义


这毫无意义!为什么第一个函数集会导致这种情况发生(

第一个函数有时做的事情之一就是重新加载窗口。一旦发生这种情况,全局变量“popupwindow”就会消失


让弹出窗口中的代码定期检查其“opener”窗口,看看是否应该自动关闭。我是否正确理解这些函数都可以打开弹出窗口? 如果是这样,一些浏览器只会在每个网页上打开一个弹出窗口,如果打开另一个弹出窗口,旧的弹出窗口将用新的url刷新


因此,其中一项功能可能会失去“功能”弹出窗口,可以解释您的问题。

只有第二组函数会打开一个新窗口。如果发生其他情况,第一组函数将重新加载第一页。但是,当新窗口打开时,重新加载不会发生,因此我看不出它们如何相互冲突?@AzzyDude如果没有重新加载窗口,则变量e不应该是未定义的。没错!这就是我感到困惑的原因。但我可以向你保证window.reload函数没有启动。如果第二组函数打开一个新窗口,则无法进行窗口重新加载。是否有其他方法可以使它们相互冲突?@AzzyDude什么能让你确定这是真的?我已经测试过了(即删除window.reload(),但仍会出现相同的故障)@AzzyDude如果第二组函数在到达状态1之前到达状态0会怎么样?这是不可能发生的。当页面加载时,状态从2开始。当您单击“播放”时,状态切换为1,当您单击“关闭”时,状态切换为0。然后它只是不断地从1和0来回反弹。2仅在开始时才是必需的。