Я хочу создать бесконечную прокрутку, используя скрипт AJAX, который я нашел в сети, чтобы загрузить мою страницу PHP, когда она достигнет дна.
На первой странице будет использоваться сеанс, который будет напечатан страницей php, которая загружается через ajax.
Мне это удалось, но я заметил, что это не работает в первый раз, только после того, как я обновил страницу один раз, как будто он не может загрузить сессию в первый раз. Я тестирую это с помощью закрытых сессий, чтобы смоделировать, как это будет выглядеть для нового пользователя.
Итак, у меня есть index.php:
<script src="jquery-1.7-min.js"></script>
<?php
session_start();
$_SESSION['test1'] = '<br><br><br>content to be loaded';
?>
<div id="postswrapper">
<div class="item">content</div>
...
<div id="loadmoreajaxloader" style="display:none;"><center><img src="ajax-loader.gif" /></center></div>
</div>
---- footer content ----
<script type="text/javascript">
$(window).scroll(function()
{
if($(window).scrollTop() == $(document).height() - $(window).height())
{
$('div#loadmoreajaxloader').show();
$.ajax({
url: "more-data.php",
success: function(html)
{
if(html)
{
$("#postswrapper").append(html);
$('div#loadmoreajaxloader').hide();
}else
{
$('div#loadmoreajaxloader').html('<center>No more posts to show.</center>');
}
}
});
}
});
</script>
А вот ещё-data.php:
<?php
session_start();
print_r ($_SESSION['test1']);
?>
Мне нужно использовать сеанс на первой странице, потому что я использую его для загрузки большего количества контента до того, как включится Ajax. Поэтому удаление сеанса не вариант.
Похоже, сессия не загружается в «more-data.php» в первый раз, только после того, как я обновлю страницу. Как я могу это исправить?
Как сказал Ахмед в комментариях, session_start();
нужно идти перед тегом скрипта и любым другим HTML в этом отношении. Я попробовал, и это работает без обновления. Спасибо Ахмеду за решение!
Других решений пока нет …