首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ajax聊天中使用xml文件?

如何在ajax聊天中使用xml文件?
EN

Stack Overflow用户
提问于 2014-06-25 17:14:40
回答 1查看 538关注 0票数 0

我想建立一个像Facebook风格的网站,并开始我正在建立一个使用ajax的聊天系统。目前,发送到聊天系统的所有消息都保存在一个xml文件中,如下所示:

代码语言:javascript
复制
<messages>
<message from="jhon" time="2:00">Hi!</message>
</messages>

我的问题是,是否可以像这里一样使用xml文件,或者数据库就是解决方案。如果有必要的话,有人可以向我解释一下如何在聊天或消息系统中正确地使用xml吗?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2014-06-25 18:49:29

我做了一个练习(用于学校),以一种类似的方式工作:

代码语言:javascript
复制
<post>
    <time>15:25</time>
    <name>myUserName</name>
    <message>testbla</message>
</post>

每次用户发送新消息时,我都会使用PHP脚本(由老师提供)来写入文件(格式类似于前面)。虽然它运行良好,但我遇到了一些问题:

  • 为了让聊天保持最新,我不得不每小时重新加载聊天3600次。这没问题。但是,因为我使用的是XML,所以我必须每小时下载3600x的文件,这绝对不是一个优雅的解决方案;由于只有几条消息,站点每小时消耗大约20-40MB的数据。(你自己算算吧!)
  • 还有一些与XML冲突的特殊字符:<>&。我不得不对它们进行转义,将它们从用户输入中删除,或者使用CDATA来防止XML因语法错误而崩溃。(XML对此非常敏感!)额外的困难是防止其他人发送错误的代码。通常,在更新XML文件时尝试消除这种情况。

考虑到上述情况,我建议您寻找一种比XML更优雅的解决方案;JSON可能更易于处理。或者,MYSQL/PHP允许您只发送最后一条消息,因此您不必一遍又一遍地发送整个文件。(我目前没有PHP/MYSQL方面的专业知识,所以我现在不能帮助您)

您问过如何才能实现XML聊天。为了给你一些指导,我将给你一些我的代码片段(使用jQuery):

代码语言:javascript
复制
/* 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文件来很容易地检查是否是这种情况。如果有问题,它会给出一个错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24404651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档