Я делаю простое приложение чата 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>
Попробуйте вместо этого обновить окно чата:
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)
.
Вы сказали, что div называется чатом. Возможно, это так:
$(".chat-box")
возможно, вы намеревались написать его как $("#chat-box")