Поместить
$(".result_message").append(Result);
внутрь цикла, разумеется. Ну или вынести
Result из цикла и внутри него конкатенировать строку.
Ну а уж если совсем стрельбу по собственным ногам исключить, то так:
$query = $mysqli->query(
"SELECT chat.id, chat.time, chat.msg, chat.user_id, u.login
FROM chat_public as chat
INNER JOIN users as u ON u.id = chat.user_id
ORDER BY chat.id DESC"
);
$messages = [];
while ($result = $query->fetch_assoc()) {
$messages[] = [
'login' => $result['login'],
'text' => $result['msg'],
'user_id' => $result['user_id'],
'date' => date('Y-m-d(H:i:s)', $result['time']),
];
}
echo json_encode($messages, JSON_UNESCAPED_UNICODE);
var $xhr = $.getJSON("/api/index.php?alg=chat&action=chat_display&using=ajax&chat=public");
$xhr.done(function (messages) {
$.each(messages, function(index, message)
{
// Тут ваш большой html, я упростил.
$(".result_message").append('<p>' + message.login + ' / ' + message.date + ' / ' + message.text + '</p>');
});
});