Всплывающее окно AJAX xmlhttprequest - PullRequest
1 голос
/ 21 мая 2011

По сути, я пытаюсь сделать так, чтобы в углу моей страницы было всплывающее окно с появлением / исчезновением.например, Джон Доу только что вышел в сеть.Я использую AJAX для проверки последних обновлений, если они новые, отобразите всплывающее окно.

Функция отображения всплывающего окна (с помощью 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('');" 

на теге body.

Итак,моя проблема ... ничего не происходитЯ знаю, что показ всплывающего окна работает, потому что если я вызову showpop (), он покажет.

Возможно, это какая-то глупая ошибка, но не могли бы вы дать мне несколько идей / указателей на то, в чем может быть проблема и какисправить это.

Большое спасибо, Калум.

1 Ответ

0 голосов
/ 22 мая 2011

Я бы начал с использования метода 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 (...) .

Это должно сработать (обратите внимание, что с помощью функции delay в jquery вы можете легко все:

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

function showpop(){
    $("#popup").fadeIn("slow");
    setTimeout(function() {hidepop();}, 4000);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...