В чем заключается ошибка функции?

139
14 мая 2019, 08:00

Помогите пжл.

Есть код:

$(".desk #window").each(function(i,v){
            $(this).on('click', function(e){
                function getInfo() {
                    $.ajax({
                        url: "desk.php",
                        type: "POST",
                        cache: false,
                        data: {char: $(e.target).data("char")},
                        dataType: "html",
                        success: function(html){
                            $(".tickets").html(html);
                        }
                    });
                }
                getInfo();
                setInterval(getInfo,1000);
            });
        });`

При обращении к файлу "desk.php", функция возвращает из БД значения типа: A001, Б002 и т.д. в соответствии с выбранным окном. Но если, например, есть несколько значений начинающихся с одной буквы, типа А001, А002, А003 и т.д., то функция возвращает их все в блок с классом "tickets". Вот PHP код обработчика:

class Desk{
public static function getWindow($char){
        $getVal = R::findAll("counter","`value` LIKE ? ORDER BY `id`", ["$char%"]);
        return $getVal ? $getVal : false;
    }
}
$getTickets = Desk::getWindow($_POST['char']);
if($getTickets) {
    foreach ($getTickets as $k => $v) {
        echo $v['value'] . '<br>';
    }
}else{
    echo "Очередь отсутствует";
}

Когда нужно посмотреть все (будем называть их билетами) билеты(A001, A002...) одного окна, то все работает нормально, но когда смотрим билеты другого окна, то в блок с классом "tickets" сначала записываются билеты из 1-го окна, после записываются все билеты второго окна, и каждую секунду так происходит, сначала из 1-го, потом со 2-го окон. Если нажимать на каждое окно, то появляются билеты каждого окна. setInterval здесь нужен для того, чтобы все билеты обновлялись каждую секунду по мере поступления записи в БД. Подскажите пожалуйста, как сделать, чтобы при нажатии на определенное окно, и далее выбора другого окна, появлялись билеты только текущего окна, а не от предыдущих и текущего? Буду очень благодарен за помощь.

Answer 1

var timer; // !!! 
$(".desk #window").each(function(i, v) { 
  $(this).on('click', function(e) { 
    function getInfo() { 
      $.ajax({ 
        url: "desk.php", 
        type: "POST", 
        cache: false, 
        data: { 
          char: $(e.target).data("char") 
        }, 
        dataType: "html", 
        success: function(html) { 
          $(".tickets").html(html); 
        } 
      }); 
 
    } 
    timer = clearInterval(timer); // !!! 
    getInfo(); 
    timer = setInterval(getInfo, 1000); 
  }); 
});

READ ALSO
PHP sessions AJAX

PHP sessions AJAX

Есть файл indexphp `

138
Как в PHPWord записать текст в конец файла .docx?

Как в PHPWord записать текст в конец файла .docx?

В переменную $phpWord я запихнул файлКак мне в конец файла добавить новую строку (строки)?

119
Изменение данных продукта в корзине

Изменение данных продукта в корзине

У меня есть два типа продуктов: 1) те которые покупаются на конкретный день 2) стандартные продуктыМне нужно реализовать возможность добавление...

118
Поочерёдный доступ к скрипту php

Поочерёдный доступ к скрипту php

Есть скрипт, когда его запускают 50 человек одновременно, сервак отдаёт 503Т

130