динамически заполненные элементы управления div становятся пустыми при обратной передаче страницы - PullRequest
1 голос
/ 01 января 2012

Я работаю над asp.net, C # веб-приложением. Работаю на моей главной странице в приложении, где все коды синхронизируются и работают хорошо.

Теперь мне нужно изменить некоторые функции, используя ajax JQuery Asyn. звонки. В моем случае это работает для меня. все хорошо.

Теперь на моей странице есть asp.net AjaX Timer Control, который срабатывает каждую минуту. Это одна из функций, которая должна быть там и не может быть изменена с помощью jQuery.

Теперь, когда мое событие таймера (Tick) срабатывает каждую минуту, мой динамически заполненный div (html () ajax jquery) становится пустым, когда страница получает обратную передачу.

т.е. рассмотрим мою страницу с div с id = div1, и она заполняется вызовом ajax jQuery, который возвращает мне html удаленной страницы, поэтому ее содержимое полностью динамично. Когда страница запускается, этот div становится пустым.

Как я могу сохранить мой div таким, какой он есть, когда моя страница возвращается обратно?

(думаете, это возможно, так как Gmail работает над тем же, как они поддерживают?)

Пожалуйста, дайте мне знать, если потребуется более подробная информация, если не ясно.

Ниже приведено изображение с вызовом ajax.

enter image description here

теперь, когда страницы получают обратную передачу, это что-то вроде ниже ....

enter image description here

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

<asp:ScriptManager ID="Scriptmanager1" runat="server">
</asp:ScriptManager>
<asp:Timer ID="Timer1" runat="server" Interval="5000" OnTick="Timer1_Tick" Enabled="true">
</asp:Timer>
<div>
    <asp:Button Text="text" runat="server" OnClientClick="callfun();return false;" />
</div>
<asp:Button Text="text" runat="server" ID="btn" OnClick="btn_Click" />
<div id="div1">
</div>
<script>

    });
    function callfun() {
        $("#div1").html("test me, test me");
    }
</script>

код позади .....

  protected void Page_Load(object sender, EventArgs e)
{

}
protected void btn_Click(object sender, EventArgs e)
{
    Response.Write("postback");
}
protected void Timer1_Tick(object sender, EventArgs e)
{
    System.Threading.Thread.Sleep(2000);
}

1 Ответ

1 голос
/ 01 января 2012

Пожалуйста, используйте pageLoad().Он запускается после каждого обновления панели обновлений.

var cached_html;
$(document).ready(function() {
    cached_html = "html returned from an ajax call"
    $("#div1").html(cached_html);
});

function pageLoad() {
    $("#div1").html(cached_html);
    //if this doesn't work, you need to make ajax call each time the refresh happens
}

И пока забудьте о gmail.У них нет Sys не определено :)

...