автообновление div с помощью jquery - PullRequest
2 голосов
/ 03 февраля 2009

При попытке использовать код, представленный здесь текст ссылки Я столкнулся с некоторыми проблемами, которые были предложены, чтобы открыть новый вопрос для этой проблемы. Я использую этот код здесь текст ссылки , пытаясь создать обратный канал для собрания (для отображения данных он использует API поиска в Твиттере, поэтому попробуйте, пожалуйста, с помощью некоторого хеш-ключа для ввода данных) Проблема в том, что когда содержимое получает его, оно сразу же снова исчезает, как если бы div скрылся. Когда я смотрю на источник, я вижу там содержимое div, но оно не отображается. Пока не истечет время ожидания и не отобразится сообщение об ошибке для времени ожидания, содержимое приведенного ниже элемента div останется. Для полноты я поставлю код, используемый здесь:

                <script type="text/javascript">
    function update() {

    $("#notice_div").html('<img src="img/ajax-loading.gif" border="0"/>');
    $.ajax({
        type: 'GET',
    url: 'inc/backchannel.php',
        timeout: 2000,
    success: function(data) {
        $("#backchannelContent").html(data);
        $("#notice_div").html(''); 
        window.setTimeout(update, 2000);
    }, 
    error: function (XMLHttpRequest, textStatus, errorThrown) {
        $("#notice_div").html('Timeout contacting server..');
        window.setTimeout(update, 60000);
    }
    })}$(document).ready(update);
    </script>

Заранее благодарен за любую помощь, я не так уж и хорош в кодировке javascript, так что мне кажется, что вы идете к кирпичной стене здесь: - (

Ответы [ 2 ]

2 голосов
/ 03 февраля 2009

У вас проблемы, потому что содержимое div загружается до того, как скрытая анимация завершена. Вы можете решить это с помощью другого обратного вызова, например:
(Это очень похоже на то, что написал Марк, но с анонимными функциями)

$(document).ready(function(){
  setInterval(function(){
    $("#random:not(:animated)").hide("slow", function(){
        $("#random").load("inc/backchannel.php").show("slow");
    });//show callback
  } ,10000);//set interval
});//doc.ready
1 голос
/ 03 февраля 2009

попробуйте что-то вроде этого

function getRandom() {
    $("#random").hide("slow");
    $("#random").load("http://www.google.co.uk", '', callback);
}

function callback() {
    $("#random").show("slow");
    setTimeout("getRandom();", 10000);
}

$(document).ready(getRandom);
...