Coldfusion - обновление страницы при обновлении записи базы данных - PullRequest
0 голосов
/ 23 января 2019

Добрый день,

Позвольте мне описать мою проблему:

Сценарий:

  • Пользователь 1 имеет веб-страницу coldfusion, содержащую 6 предупреждений в виде HTML-элементов, заполненных базой данных. Пользователь 1 постоянно следит за изменениями на этой странице.
  • Пользователь на другом компьютере (другой сеанс) входит в консоль администратора, добавляет седьмой элемент и вставляет его в базу данных.
  • База данных содержит поле, которое изменяется с 0 на 1, как только предупреждение добавляется и вставляется в базу данных.
  • Веб-страница пользователя 1 не должна динамически обновляться или обновляться с помощью восьмого предупреждения.

Проблема:

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

Решение:

  • Мне нужно запустить cfquery, чтобы проверить поле isUpdated в базе данных.
  • Этот cfquery нужно запускать каждую минуту.
  • Как только cfquery вернет 1, страница должна обновиться, что, в свою очередь, также заполнит новое предупреждение.

1 Ответ

0 голосов
/ 23 января 2019

Можно сделать через sockets, и вам не нужно проверять наличие новой записи каждую минуту.

Вы также можете сделать это с помощью javascript/jquery:

<script>
var lastAlert = '#lastAlert#'; //last at the time of loading the page

setInterval(function() {
    lastAlert = isUpdated(lastAlert);
}, 60000);

function isUpdated(lastAlert){
res = lastAlert;
$.ajax({                            
    url: 'checkAlerts.cfm', //in this file do check for changes in the database. should return the number of the last alert
    type: 'POST',
    data: {lastAlert:lastAlert},
    cache: false,
    success:function(res){  
        if(res > lastAlert){
            //your code if there is a new entry 
            alert('a new entry has been added');
        }
    }
});
return res;
}   
</script>

Я не проверял код! Но я надеюсь, что вы понимаете, как действовать.

...