Показать сообщение отдельно
  #1 (permalink)  
Старый 16.08.2009, 11:39
roma86
 
Сообщений: n/a

Снятие затемнения с экрана при получении ответа от php срипта с помощью setInterval
Задача.
Всплывающее затемнение организованно функцией
showPopup()
.
она работает безотказно. Делает плавное всплытие полупрозрачного черного экрана и дива с предупреждением.
Смысл сего действия в блокировке действий пользователя на время действия функции.

При загрузке документа стартует корявая функция с запросом ajax к php скрипту
который возвращает либо 1 либо 0. (Скрипт считывает из базы данных запиь и решает что возвращать.)
Эта функция при ответе 0 вызывает затемнение, иначе - не вызывает (глупо звучит, конечно) .
function getEnd(){
    $.ajax({
        url: 'generateOtvet.php',
        type: "POST",
        success: function(html){
            if (html == 0) {
                showPopup()
            }
        },
        Error: function(){
            alert("error");
        },
        cache: false
    });
}


В чем собсно вопрос.
Чтобы эта канитель работала постоянно (дабы словить изменение в php скрипте), функция вызывается с помощью
$(document).ready(function(){
       setInterval(getEnd, 1000);//и потом через каждую секунду.
});

В результате имеется замечательный эффект дергающегося экрана.
А нужно, чтобы экран был все время, а только в случае изменений в базе пропадал.
Что предпринималось.
Пробовал делать так чтобы при старте полюбому загружался экран, а в случае возвращения php сриптом 1 он удалялся.
делал так:
В специальный блок втыкал html с запуском функции для затемнения.
var hide = "<script>$(document).ready(function(){showPopup();});</script>";
$("#specialDiv").html(hide);

а при получении 1 от пхп скрипта пытался убить эту же запись
var hide = "";
$("#specialDiv").html(hide);
, но не тут-то было. Ничего не удаляется.

И вот что интересно. Поэкспериментировав очень удивился. Оказывается запись типа
var hide = "Text1";
$("#specialDiv").html(hide);
[JS]var hide = "Text2";
$("#specialDiv").html(hide);

выводит в блоке div с id ="specialDiv" "Text2", а запись
var hide = "<script>$(document).ready(function(){showPopup();});</script>";
$("#specialDiv").html(hide);
var hide = "Text1";
$("#specialDiv").html(hide);
[JS]var hide = "Text2";
$("#specialDiv").html(hide);


Выводит в том же блоке "Text2" да к тому же еще и затемнение экрана.
не понятно.

В общем, из всего выше сказанного можно сделать вывод, что я в jquery как и в javascript полный ноль. Так оно и есть. Но несмотря на это, подскажите пожалуйста по существу. То что я ничего хорошего накодить не могу это мне известно. Просто, пожалуйста, помогите решить задачу. К тому же она довольно интересна.

Всем кто откликнется заранее спасибо.
Ответить с цитированием