我正在开发一个我需要为客户端的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();
});