0

对于我的网站,我想有一个小聊天/支持领域。目前我可以编写并将其保存到数据库中。

但我想拥有它,如果我再次打开该站点,旧文本来自数据库。但是最好的方法是如何做到这一点?我也认为我的 Array 是错误的,因为我只从数据库中得到一个而不是所有数据。

我的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);
            }
            }
            });
4

1 回答 1

0

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

缺少的部分可能是一个简单的“分配”操作,例如

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

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

当然也有专门的 JSON 解析器,它们也会处理 Date 对象。简单的分配只会在 JavaScript 对象中生成字符串或数字内容,请参见此处

于 2013-07-27T13:03:16.973 回答