2012-04-03 3 views
2

У меня есть страница, которая над ней. Я хочу, чтобы панель автоматически обновлялась каждые 5 минут, и если у пользователя есть сообщение в его почтовом ящике, покажите ему. Какое лучшее решение для этого?Как обновить часть страницы с интервалом

Должен ли я использовать AJAX, jQuery или JavaScript? Мое предпочтительное решение - решение на стороне сервера.

+1

почему это downvoted? не плохой вопрос. +1, чтобы выровнять его. – RPM1984

+0

У меня эта привычка для пользователей, которые проголосовали за меня без причины. – Arian

+1

@JonathanLonowski - согласился. Но я видел худших с причиной нисходящего потока. Так что действительно нужно отслеживать людей, которые не участвуют в голосовании, и не должны указывать их каким-либо образом. Это остановит их. :) – RPM1984

ответ

1

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

  1. ScriptManager или ScriptManagerProxy (если вложенные страницы): Управляет Ajax звонки
  2. UpdatePanel: Определяет Что обновляет. Элементы управления вложенными в <ContentTemplate> подлежат частичных обновлений
  3. Triggers: Управляет когда содержание обновляется.

Для вашей цели в Timer управление может быть использовано в качестве триггера для того, чтобы частичные постбэк срабатывают каждые 5 секунд:

<asp:ScriptManager ID="scriptManagerMain" runat="server"/> 
<asp:Timer ID="timer" Interval="5000" runat="server"/> 
<asp:UpdatePanel runat="server"> 
    <ContentTemplate> 
     <asp:Panel ID="panelToBeUpdated" runat="server"> 
      <asp:Label ID="lblContent" runat="server" ></asp:Label> 
     </asp:Panel> 
    </ContentTemplate> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="timer" /> 
    </Triggers> 
</asp:UpdatePanel> 
1

Я бы использовал Jquery для отправки запроса AJax на сервер для получения обновленного контента. Получив контент, я снова буду использовать JQuery для обновления разметки.

Вы можете установить до запуска каждые 5 мин с помощью setInterval в Javascript

1

Трудно дать конкретный пример без кода. Но вам в основном нужно загрузить новый контент с помощью запроса ajax, который запускается таймером.

setInterval(function(){ 
    $.ajax({ 
     url: "someUrlThatServesUpdatedContent.aspx", 
     cache: false 
    }).done(function(html) { 
     $("#results").html(html); 
    }); 
}, 300000); 

Вышеприведенный пример является простым примером, указывающим на то, что вы в правильном направлении.

Edit: Вот пример того, как сделать вызов Ajax без JQuery https://stackoverflow.com/a/2792721/1059001

1

Это можно сделать с помощью AJAX с использованием метода, описанного в предыдущих ответах, но если вы хотите иметь на стороне сервера решение, которое я рекомендовал бы загрузку той части страницы в IFRAME, с мета обновления:

<meta http-equiv="refresh" content="300"> 

Этот метод, однако затруднит сообщить о любых событий или действий пользователя вернуться на главную страницу.

+0

Это не «серверное решение», поскольку он использует браузер для перезагрузки iframe. На самом деле не возможно иметь полностью серверное решение в Интернете, так как сервер не может заставить браузер делать что-либо напрямую. –

+0

Можно ли использовать пользовательский элемент управления и использовать в нем свой метатег?и добавить его на мою страницу? – Arian

Смежные вопросы