0

我正在为客户的 Intranet 系统开发一个小型聊天应用程序。我是 JQuery 和 Ajax 世界的新手,但我正在尽力而为。但是,我在这里遇到了一个问题,你们可能会在弹指之间找到答案:)

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

事情是,有些事情告诉我我可能做错了,我的意思是,它有点工作但不是正确的方式(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();
});
4

0 回答 0