Я строю чат. У меня есть этот рабочий код Jquery, который вызывает logs.php каждую секунду и обновляет чат.
$(document).ready(
function(e) {
$.ajaxSetup({cache:false});
setInterval(function() {
$('#chatlogs').load('logs.php');
updateScroll();
}, 1000);
}
);
Как вы можете видеть, также updateScroll
, функция JS на моей странице, вызывается. Updatescroll
создает переменную, которую я хотел бы передать logs.php
, Есть какой-либо способ сделать это? Другими словами, updatescroll
в основном проверяет каждую секунду, прокрутил ли пользователь до верха чата. Если так, я скажу logs.php
загрузить — скажем — еще 10 сообщений. Но для того, чтобы сделать это, мне нужно что-то updatescroll
переходит к функции Jquery и, таким образом, на logs.php
, Ты понял? Спасибо
Во-первых, когда дело доходит до AJAX, я бы порекомендовал использовать window.setTimeout
интервалы могут стать хитрыми, когда вы выполняете вещи асинхронно (если один вызов зависает, вы можете получить несколько вызовов одного и того же сценария).
так что то вроде
(function($){
var update_messages = function(){
var count = updateScroll();
$('#chatlogs').load('logs.php?count='+count, function(){
window.setTimeout(update_messages, 1000);
});
}
$(document).ready(function(){
$.ajaxSetup({cache:false});
update_messages();
});
})(jQuery);
Тогда в вашем PHP-скрипте «count» будет доступен через $_GET['count']
,
РЕДАКТИРОВАТЬ: вы можете видеть, что анонимная функция отправляется в качестве второго аргумента для загрузки, она будет вызываться ПОСЛЕ того, как AJAX-вызов завершен, поэтому мы можем убедиться, что одновременно выполняется только 1 из них
Других решений пока нет …