В принципе, вам нужен контейнер, в который будут помещаться все вновь полученные сообщения.
<div id="messages">
<! -- message 1 -->
<! -- message 2 -->
<div id="newMessages">
</div>
</div>
Затем вам нужна кнопка (или привязка, или что-то еще), которую вы можете подключить к извлечению-больше-метод:
<input type="button" value="Fetch more messages" id="btnFetchMessages" />
Поместите соединение где-нибудь внутри DOMReady:
var lastFetchedMessage = 0;
$('#btnFetchMessages').click(function() {
$.ajax({
url: '/getMessages.php',
type: 'POST',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
data: '{"lastId":'+lastFetchedMesasge+'"}',
success: newMessagesReceived
});
Итак, одним нажатием кнопки мы отправляем запрос AJAX на getMessages.php
, где вы посмотритеlastFetchedMessage
и вернуть примерно 10 следующих сообщений, основанных на этом.С этой страницы вы возвращаете массив JSON , содержащий сообщения со всей интересующей их информацией.
При успешном запросе AJAX будет вызываться функция newMessagesReceived
:
function newMessagesReceived(result) {
var container = $('#newMessages');
for(var i = 0; i < result.length; i++) {
var message = $('<div>' + result[i].body + '</div>');
container.append(message);
}
var lastFetchedMessage = result[i].id;
}
Выше предполагается, что вы возвращаете массив с сообщениями, которые имеют как минимум свойства body
и id
:
[ { "body": "new message1", "id": "10" }, { "body": "new message2", "id": "11" } ]