Little javascript / ajax / mysql chat

Little javascript / ajax / mysql chat

本文关键字:chat mysql ajax Little javascript      更新时间:2023-09-26

对于我的网站,我想有一个小的聊天/支持字段。现在我可以写,也可以直接保存到数据库中。

但我想知道,如果我再次打开网站,旧文本来自数据库。但最好的方法是什么呢?我还认为我的Array是false,因为我只从数据库中返回一个数据,而不是所有数据。

我的javascript测试代码:

    initChat: function () {
                var cont = $('#chats');
                var list = $('.chats', cont);
                var form = $('.chat-form', cont);
                var input = $('input', form);
                var btn = $('.btn', form);
                var handleClick = function (e) {
                    e.preventDefault();
                    var text = input.val();
                    if (text.length == 0) {
                        return;
                    }
                    var time = new Date();
                    var time_str = time.toString('dd.MM.yyyy - H:mm')+ " Uhr";
                    var tpl = '';
                    tpl += '<li class="out">';
                    tpl += '<img class="avatar" alt="" src="assets/img/avatar.png"/>';
                    tpl += '<div class="message">';
                    tpl += '<span class="arrow"></span>';
                    tpl += 'Meine Frage&nbsp;';
                    tpl += '<span class="datetime">vom ' + time_str + '</span>';
                    tpl += '<span class="body">';
                    tpl += text;
                    tpl += '</span>';
                    tpl += '</div>';
                    tpl += '</li>';
                    var msg = list.append(tpl);
                    var time_str_new = time.toString('yyyy-MM-dd H:mm:ss');             
                    $.ajax({                                      
                    type: "POST",                                    
                    url: '../support.php',
                    data: {datum: time_str_new, text: text},
                    dataType: 'json',
                    success: function(data)
                    {
                    input.val("");
                    }
                    });
                    $('.scroller', cont).slimScroll({
                        scrollTo: list.height()
                    });
                }

我的php测试脚本:

$kundenid = KUNDENID;
$query = "INSERT INTO support set datum = '$datum', kunde = '$kundenid', text = '$text', typ = 'kunde'";
$result = mysql_query($query,$db);
$querysup = "SELECT id, datum, kunde, text, typ FROM support WHERE kunde = '$kundenid'";
$resultsup = mysql_query($querysup,$db);
while($rowsup = mysql_fetch_array($resultsup)) {
$datum = $rowsup['datum'];
$text = $rowsup['text'];
$typ = $rowsup['typ'];
$data = array("datum"=>$rowsup['datum'], "text"=>$rowsup['text'], "typ"=>$rowsup['typ']);
}
echo json_encode($data);

好的,现在我有了这个代码。若我发布一个新的文本,它会显示数据库中的所有帖子。但我需要的是,在我的第一篇文章之前,mysql的数据仍然存在。

    initChat: function () {
        var cont = $('#chats');
        var list = $('.chats', cont);
        var form = $('.chat-form', cont);
        var input = $('input', form);
        var btn = $('.btn', form);
        var handleClick = function (e) {
            e.preventDefault();
            var text = input.val();
            if (text.length == 0) {
                return;
            }
            var time = new Date();
            var time_str = time.toString('dd.MM.yyyy - H:mm')+ " Uhr";
            var tpl = '';
            tpl += '<li class="out">';
            tpl += '<img class="avatar" alt="" src="assets/img/avatar.png"/>';
            tpl += '<div class="message">';
            tpl += '<span class="arrow"></span>';
            tpl += 'Meine Frage&nbsp;';
            tpl += '<span class="datetime">vom ' + time_str + '</span>';
            tpl += '<span class="body">';
            tpl += text;
            tpl += '</span>';
            tpl += '</div>';
            tpl += '</li>';
            var msg = list.append(tpl);
            var time_str_new = time.toString('yyyy-MM-dd H:mm:ss');             
            $.ajax({                                      
            type: "POST",                                    
            url: 'support.php',
            data: {datum: time_str_new, text: text},
            dataType: 'json',
            success: function(data)
            {
            var myArray = data;
            for (var i = 0; i < myArray.length; i++) {
            var datum = new Date(myArray[i].datum);
            var tpl = '';
            tpl += '<li class="out">';
            tpl += '<img class="avatar" alt="" src="assets/img/avatar.png"/>';
            tpl += '<div class="message">';
            tpl += '<span class="arrow"></span>';
            tpl += 'Meine Frage&nbsp;';
            tpl += '<span class="datetime">vom ' + datum.toString('dd.MM.yyyy - H:mm:ss')+ ' Uhr' + '</span>';
            tpl += '<span class="body">';
            tpl += myArray[i].text;
            tpl += '</span>';
            tpl += '</div>';
            tpl += '</li>';
            var msg = list.append(tpl);
            }
            }
            });

但是如何将它从数组加载到我的javascript。。。所以如果我刷新页面,数组中的值就在我的"聊天框"中

缺失的部分可能是像这样的简单"分配"操作

var chatArr=<?PHP echo json_encode($data) ?>;

<script type="language/JavaScript">部分中,您可以在处理完文档中的所有PHP内容后插入该部分。当然,您应该确保$data中没有任何"不需要的"内容。之后,您可以对$(function(){...})部分中的JavaScript数组/对象在文档中的任何其他位置执行任何操作。

当然,还有专门的JSON解析器,它们也会处理Date对象。简单的赋值只会在JavaScript对象中生成Sting或数字内容,请参阅此处。