2011-05-21 62 views
1

基本上,我想要做的是在我的页面的角落有一个淡入/淡出的弹出窗口。例如John Doe刚刚上网。我使用AJAX检查最新的更新,如果它们是新的,则显示弹出窗口。AJAX xmlhttprequest popup

显示弹出式窗口(使用jquery)的功能是:

function hidepop(){ 
    $("#popup").fadeOut("slow"); 
} 

function showpop(){ 
    $("#popup").fadeIn("slow"); 
    setTimeout("hidepop()",4000); 
} 

更新和显示弹出,如果有必要的代码,是:

function getHTTPObject(){ 
    if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP"); 
    else if (window.XMLHttpRequest) return new XMLHttpRequest(); 
    else { 
    alert("Your browser does not support AJAX. Please download Google Chrome or Firefox."); 
    return null; 
    } 
} 


function checkUpdates(old){ 
    httpObject = getHTTPObject(); 
    var randomnumber=Math.floor(Math.random()*10000); 
    if (httpObject != null) { 
    link = "updates.php?rnd="+randomnumber; 
    httpObject.open("GET", link , true); 
    httpObject.onreadystatechange = function() { 
     if(httpObject.readyState == 4){ 
     var response = httpObject.responseText; 
     var objDiv = document.getElementById("popup"); 
     objDiv.innerHTML = response; 
     if(response == old){ 
      var time = setTimeout(function(){checkUpdates(response); response = null},5000); 
     }else{ 
      var objDiv = document.getElementById("popup"); 
      objDiv.innerHTML = response; 
      showpop(); 
      var time = setTimeout(function(){checkUpdates(response); response = null},5000); 
     } 
     } 
    } 
    } 
} 

然后,启动它全部关闭:

onload="checkUpdates('');" 

身上的标签。

所以,我的问题是......没有任何反应。我知道显示弹出的作品,因为如果我调用showpop()它会显示。

这可能是一些愚蠢的错误,但是,请你给我一些想法/指示问题可能是什么以及如何解决它。

非常感谢, Calum。

回答

1

我会使用jQuery的“get”的方法启动,因为你似乎是使用jQuery了。

var old = ''; 
function checkUpdates() { 
    var randomnumber = Math.floor(Math.random() * 10000); 
    link = "updates.php?rnd=" + randomnumber; 
    $.get(link, function(data) { 
     /* called when the resource was successfully retrieved */ 
     if (old != data) { 
      $('#popup').html(data); // set the new data in the popup element 
      showpop();    // show the popup 
      old = data;    // store the retrieved data 
     } 
     setTimeout(checkUpdates, 5000); 
    }); 
} 

您的showpop和hidepop函数没有真正定义正确。
也许你可以在document.ready(...)上看到。

这应该做的伎俩(请注意,使用jQuery的delay功能,可以很好地连锁的一切:

function hidepop(){ 
    $("#popup").fadeOut("slow"); 
} 

function showpop(){ 
    $("#popup").fadeIn("slow"); 
    setTimeout(function() {hidepop();}, 4000); 
} 
+0

不,这似乎并没有工作,哪里是“响应”变量从哪里来的感谢?您的帮助。 – CalumMc 2011-05-21 20:31:09

+0

SRY,小的复制/粘贴错误:)固定它.. – TweeZz 2011-05-21 20:33:37

+0

这奏效了!虽然我没有在初始的showpop()回来了,因为你的一个再不会淡出。非常感谢。 :) – CalumMc 2011-05-21 20:37:58