我想创建一个聊天框,我在互联网上找到了一些片段,但它们看起来太大了,无法理解。在阅读完所有内容之后,我有一个基本的方法来接近它:
我是AJAX和网页设计的初学者,说实话我只是知道使用AJAX获取数据和发布数据但我的问题是:当某些用户发帖时如何更新聊天框?
我知道如何在用户点击发送按钮时发布消息,但如何在不点击任何按钮的情况下将其更新给其他用户?
有没有办法检测用户将数据发布到数据库中的post_event
等事件,以便我们可以在用户发布内容时执行某些操作?
据我们所知,我们在JavaScript中有很多活动,请帮助我。
我一直在使用AJAX,这是一个好的做法还是坏的做法?我的一位朋友说在网站上运行聊天室应用程序比正常网站花费更多是真的吗?如果一个网站有一个聊天应用,它的成本会更高,即使它的流量较少吗?
答案 0 :(得分:2)
最简单的方法:
要更新聊天窗口,您必须将请求传递给服务器(使用Ajax),并将收到的数据发布到某个textarea(例如ID为“TextAreaId”):
<script type="text/javascript">
function updateChat() {
$.ajax({
url: "your_url",
type: "POST",
success: function (data) {
$("#TextAreaId").value = data;
}
});
}
</script>
服务器端应该返回一些消息(例如,最后20个)。
要使用一段时间更新聊天窗口:
<body onload="setInterval('updateChat()', 1000)">
要发布一些消息,请将ajax发布到:
<script type="text/javascript">
function postMessage() {
$.ajax({
url: "your_url",
type: "POST",
data: "message = " + Message + "&user = " + User, // pass message and user name
success: function (data) {
updateChat();
}
});
}
</script>
使用PHP或ASP处理服务器端的ajax请求。
我认为最好使用一些文本文件而不是数据库。它减少了服务器负载。
There你可以找到一个可以帮助你从服务器Ajax.Request
获得回应的机制
Here你可以找到聊天示例。
Here我找到的最简单的例子。
答案 1 :(得分:1)
你需要一个计时器
this.ajaxError(function (event, request, settings) {
//code to set timer
});
然后你需要一个jquery函数来检索自上次更新以来的所有消息
getMessages = function () {
clearTimer();
var postData = getPostData();
postData.ChatMessage = '';
$.post(url, postData, applyData, settings.dataType);
}
其中PostData是lastupdated,chatroom id等的变量