Установите div html для отображения содержимого массива

0

Я делаю простое приложение чата php, которое отправляет сообщение на сервер через ajax и сохраняет его в текстовом файле. Теперь после получения всех данных в текстовом файле и отправки его клиенту в форме массива через ajax. Теперь то, что я хочу сделать, это заполнить div, называемый "чат-ящик", с содержимым массива как html, но ничего не происходит, и ii не получают никаких ошибок в firebug, кроме ": undefined".

Это код:

<script type="text/javascript">
            // setInterval(function(){alert("Hello");}, 5000);
            $(document).ready(function() {
                function getchat(messages)
                {
                    var chat = $(".chat-box").html();
                    for (var i=0; i < messages.length; i++)
                    {
                        var msg = messages[i].split(':');
                        var name = msg[0];
                        var post = msg[1];
                        $(".chat-box").html(chat + "<div class='bubble'>" + name + " : " + post + "</div>");

                    }
                }

                $("#btnPost").click(function() {
                    var msg = $("#chat-input").val();
                    if (msg.length == 0)
                    {
                        alert ("Enter a message first!");
                        return;
                    }
                    var name = $("#name-input").val();
                    var chat = $(".chat-box").html();
                    //$(".chat-box").html(chat + "<br /><div class='bubble'>" + msg + "</div>");

                    var data = {
                        Name : name,
                        Message : msg
                    };
                    $.ajax({
                        type: "POST",
                        url: "chat.php",
                        data: {
                            data: JSON.stringify(data)
                        },
                        dataType: "json",
                        success: function(chat) {
                            getchat(chat)
                        }
                    });
                });
            });
        </script>
  • 0
    Вы заявляете, что это текстовый файл, который вы пытаетесь отобразить. Измените свой тип данных Ajax с json на text и посмотрите, поможет ли это.
  • 2
    Не могли бы вы предоставить образец данных, возвращаемых вашим PHP-скриптом?
Теги:

2 ответа

1
Лучший ответ

Попробуйте вместо этого обновить окно чата:

var index = messages[i].indexOf(':');
var name = messages[i].substring(0, index);
var content = messages[i].substring(index + 1);
var $newMessage = $('<div>')
        .addClass('bubble')
        .text(name + " : " + content);
$(".chat-box").append($newMessage);

Если это не работает, проверьте правильность сообщений, возвращаемых сервером, с помощью console.log(messages).

0

Вы сказали, что div называется чатом. Возможно, это так:

$(".chat-box")

возможно, вы намеревались написать его как $("#chat-box")

Ещё вопросы

Сообщество Overcoder
Наверх
Меню