WedX - журнал о программировании и компьютерных науках

Постоянное обновление/получение вывода ‹div› проблемы

Итак, у меня есть этот код JavaScript, который предназначен для постоянного получения вывода файла на моем веб-сайте.

$(function() {
    function reloadTable() {
        $.get("pot1.php", function(data) {
            $("#pot").html(data);
        });
    }
    reload = setInterval(reloadTable, 1000);
});

И это div, который использует id "горшок"

<div id="pot">
    <div id="timeleft">
        <h2 class="text-primary text-center"><span class="tl1" id="tl1"><?php include('tl1.php');?></span></h2>
    </div>
    <div>
        <h1>Jackpot:
            <font color="#598749"><span class="pot1"><?php include('pot1.php');?></span></font>
        </h1>
    </div>
    <?php include('/spinfunction/raffleanim.php'); ?>
</div>

Но почему-то не работает, помогите?

21.10.2016

  • Поздравляю с этим? 22.10.2016
  • В Stack Overflow смысл в том, чтобы задать вопрос о проблемах, которые у вас возникают с кодом, а не просто показать его и рассказать нам, что у вас есть? 22.10.2016
  • Это не работает 22.10.2016
  • Мой рыдающий шурин тоже не мой, ну и что? 22.10.2016
  • Суть в том, что конкретно не работает, проверяли ли вы консоль браузера на наличие ошибок, если да, то что вы видели, включали ли вы jQuery, показывает ли он вообще что-нибудь? Не работает - не очень хорошее описание проблемы? 22.10.2016
  • попробуйте обернуть его вокруг $(document).ready() 22.10.2016
  • @Geeky, заключающий функцию в $(), имеет тот же эффект, что и $(document).ready(), просто он не так читаем, если вы не знакомы с шаблоном (поэтому, как правило, лучше избегать IMO). stackoverflow.com/questions/9396415/ 22.10.2016
  • Спасибо Брайан за ссылку я не знаю этого 22.10.2016

Ответы:


1

Вы проверили, что он не кэшируется браузером?

Вы также убедились, что запрос AJAX не вызывает ошибку 404 и действительно получает действительные данные?

Похоже, что это будет очень «кэшируемым», поскольку это запрос GET и не имеет строки запроса.

Несколько вещей, которые могут помешать кэшированию:

  • Возвращать заголовки с сервера для предотвращения кэширования
  • Измените его на POST-запрос
  • Добавляйте разные строки запроса к каждому запросу

Для получения дополнительной информации

Заголовки:

https://stackoverflow.com/a/21609642/5302749

Добавьте это перед своим ответом:

header('Expires: Sun, 01 Jan 2014 00:00:00 GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', FALSE);
header('Pragma: no-cache');

POST-запрос https://api.jquery.com/jquery.post/ -

Страницы, полученные с помощью POST, никогда не кэшируются, поэтому параметры cache и ifModified в jQuery.ajaxSetup() не влияют на эти запросы.

Каждый раз добавлять новую строку запроса. Как упомянул @Barmar, вы также можете указать cache: false в качестве опции. Я полагаю, что некоторые версии jQuery не позволят вам передать эту опцию напрямую в $.get, поэтому я изменил его на $.ajax, также обработка ошибок всегда является хорошей идеей, поэтому я добавил обратный вызов .fail.

   $(function() {
       function reloadTable(){
            $.ajax({
                url: "pot1.php",
                cache: false,
            })
            .done(function( data ) {
                $( "#pot" ).html( data );
            })
            .fail(function(jqXHR, textStatus, errorThrown){
                console.log('Error: ' + textStatus ); // error handling here
            });
       }
       reload = setInterval(reloadTable, 1000);
   });

Или добавить параметр вручную (это только выглядит меньше, поскольку обработка ошибок не включена) - я думаю, что лучше не изобретать велосипед и просто использовать встроенные функции jQuery, где это возможно.

   $(function() {
       var reloadCount = 0;
       function reloadTable(){
            reloadCount++;
            $.get("pot1.php?reloadCount=" + reloadCount, function(data) {
                $("#pot ).html(data);
            });
       }
       reload = setInterval(reloadTable, 1000);
   });
21.10.2016
  • Другой вариант — использовать $.ajax с параметром cache: false. Он работает, добавляя случайный параметр URL, как вы делаете. 22.10.2016
  • Новые материалы

    Как создать диаграмму градиентной кисти с помощью D3.js
    Резюме: Из этого туториала Вы узнаете, как добавить градиентную кисть к диаграмме с областями в D3.js. Мы добавим градиент к значениям SVG и применим градиент в качестве заливки к диаграмме с..

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

    Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
    В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..


    Для любых предложений по сайту: [email protected]