У меня есть некоторые процессы, которые выполняются как фоновое задание, позволяя пользователю продолжать использовать страницу, когда задания завершены (что может занять несколько минут). Я хочу показать сообщение пользователю, лучшее местодля отображения это будет главная страница AFAIK (если они перемещаются со страницы на страницу на сайте), поэтому я определил div в файле masterpage.
Я пытаюсь найти лучший метод для отображения данных, на данный момент у меня есть метод в файле vb masterpage, который опрашивает базу данных, чтобы узнать, есть ли работа (которая включает в себя сложную логику и некоторый доступ к БД)завершил, если он имеет, он показывает сообщение в div, например, «Задание 13132 выполнено» - который работает нормально.
Проблема в том, что это не динамический, и мне нужно обновить страницу, чтобы вызватьфункция, которая проверяет, завершены ли процессы, как я могу использовать AJAX для автоматической доставки этого контента каждые 5 секунд?
Я пытался использовать таймер asp с 5-секундным временем тика, но вся страница обновляется по таймерусобытие клика каждые 5 секунд.
Protected Sub Timer1_Tick(Byval sender as Object, Byval e As EventArgs)
poll_results()
End Sub
Public Sub poll_results()
'database access logic
If dbtable.isCompleted = True
Dim sb As New StringBuilder()
sb.Append("$('#status').html('Job abc123 is complete');")
Page.ClientScript.RegisterStartupScript(GetType(Page), "myscript", sb.ToString(), True)
End If
End Sub
Есть ли способ обновить div только обновленным сообщением без полного обновления с использованием этого кода?Или, если это невозможно, есть ли какой-либо способ повторить вышеупомянутую функцию, используя jQuery, и все же иметь возможность обновлять текст DIV, только если работа завершена?