我想建立一个像Facebook风格的网站,并开始我正在建立一个使用ajax的聊天系统。目前,发送到聊天系统的所有消息都保存在一个xml文件中,如下所示:
<messages>
<message from="jhon" time="2:00">Hi!</message>
</messages>我的问题是,是否可以像这里一样使用xml文件,或者数据库就是解决方案。如果有必要的话,有人可以向我解释一下如何在聊天或消息系统中正确地使用xml吗?
谢谢!
发布于 2014-06-25 18:49:29
我做了一个练习(用于学校),以一种类似的方式工作:
<post>
<time>15:25</time>
<name>myUserName</name>
<message>testbla</message>
</post>每次用户发送新消息时,我都会使用PHP脚本(由老师提供)来写入文件(格式类似于前面)。虽然它运行良好,但我遇到了一些问题:
<、>和&。我不得不对它们进行转义,将它们从用户输入中删除,或者使用CDATA来防止XML因语法错误而崩溃。(XML对此非常敏感!)额外的困难是防止其他人发送错误的代码。通常,在更新XML文件时尝试消除这种情况。考虑到上述情况,我建议您寻找一种比XML更优雅的解决方案;JSON可能更易于处理。或者,MYSQL/PHP允许您只发送最后一条消息,因此您不必一遍又一遍地发送整个文件。(我目前没有PHP/MYSQL方面的专业知识,所以我现在不能帮助您)
您问过如何才能实现XML聊天。为了给你一些指导,我将给你一些我的代码片段(使用jQuery):
/* this function gets chat logs from XML and manipulate the content to a
div used for the chat-content. It is being evaluated each second by
an interval that calls the function each 1000 ms. (not included in this code) */
function getChatLogs() {
var chatLogs = "";
$.ajax({
url: "chat_log.xml",
success: function(data) {
$(data).find("post").each(function() {
var timeMessage = $(this).find("time").text();
var nameSender = $(this).find("name").text();
var contentMessage = $(this).find("message").text();
chatLogs += "<article><time>" + timeMessage + "</time> <strong>" + nameSender + "</strong> <p>" + contentMessage+ "</p></article>";
});
$("#chat").html(chatLogs);
}
});
}
/* this function handles messages being send by the user */
function sendInput(keyCode) {
if(keyCode === 13 && $("#post").val() != "") {
var name = localStorage.getItem("username"); // I used localstorage fo username
var time = currentTime();
var message = $("#post").val();
$.ajax({
type: "POST",
url: "save.php",
data: {"name": name, "time": time, "message": message},
success: function(data) {
$("#post").val(""); // (clear the chat-input)
}
});
}
}额外提示:您的XML文件必须格式良好。你可以通过在Chrome中直接打开XML文件来很容易地检查是否是这种情况。如果有问题,它会给出一个错误。
https://stackoverflow.com/questions/24404651
复制相似问题