自动刷新多个JQueryUI对话框窗口

时间:2013-09-30 06:47:12

标签: jquery ajax jquery-ui refresh chat

我正在开发一个我需要为客户端的Intranet系统做的小型聊天应用程序。我是JQuery和Ajax世界的新手,但我正在努力。但是,我在这里遇到一个问题,你们可能只需轻轻一按就可以得到答案:)

我创建了一个Default.aspx页面,其中包含一个用户列表,当您单击其上的超链接(一个联系人)时,会弹出一个新的对话框窗口,它会显示一个聊天窗口lol。

事实上,有些东西告诉我,我可能做错了,我的意思是,它有点有效但不是正确的方式(tm)。

让我感到惊讶的是,我正在整个页面上进行“全局”(?)ajax刷新,而不是让联系人列表对话框自行刷新(如果我正确解释自己的话,请不要这样做)。此外,在同一个jquery中添加聊天窗口是不对的。

问题的根源是,如何为我生成的每个对话窗口添加一个单独的ajax调用/函数,以一种不那么愚蠢的方式? (还有,如何?xD)。我们的想法是让ajax调用刷新每个窗口的聊天记录(因此它显示旧的聊天文本和新的传入消息)。

提前致谢!

这是我的JQuery代码:

$(document).ready(function () {
    $.ajaxSetup({cache: false});

    // ############################
    // ############################

    $('#wndContacts').dialog({
        width: '150',
        height: '300',
        position: [20, 60]
    });

    // ##############################
    // ##############################

    function updateContacts() {
        $("#wndContacts").html('Loading..');
        $.ajax({
            type: 'GET',
            url: 'ajax/Contacts.aspx?token=<%= Session["token"] %>',
            timeout: 2000,
            success: function (data) {
                $("#wndContacts").html(data);
                window.setTimeout(updateContacts, 5000);

                $('.hContact').click(function (e) {
                    e.preventDefault();
                    var divID = "contact" + $(this).attr("href");
                    $(document.body).append(
                        "<div id='" + divID + "' title='" + $(this).attr("href") + "'>"
                        + "<div id='" + divID + "_chat'></div>"
                        + "<div id='" + divID + "_input' class='usrInput'>"
                        + "<input type='text' />"
                        + "</div>"
                        + "</div>"
                    );
                    $('#' + divID)
                        .dialog({
                            width: 200,
                            height: 300
                        });
                });
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                $("#wndContacts").html('Timeout contacting server..');
                window.setTimeout(updateContacts, 10000);
            }
        });
    }

    updateContacts();
});

0 个答案:

没有答案