Elmanovyurik
@Elmanovyurik
Гайды мое все...

Json получения данных из массива?

<script type="text/javascript">
		$(document).ready(function(){

		/* Переменная-флаг для отслеживания того, происходит ли в данный момент ajax-запрос. В самом начале даем ей значение false, т.е. запрос не в процессе выполнения */
		var inProgress = false;
		/* С какой статьи надо делать выборку из базы при ajax-запросе */
		var startFrom = 10;
	   	$(window).scroll(function()   {

	        /* Если высота окна + высота прокрутки больше или равны высоте всего документа и ajax-запрос в настоящий момент не выполняется, то запускаем ajax-запрос */
	        if($(window).scrollTop() + $(window).height() >= $(document).height() - 200 && !inProgress) {

		        $.ajax({
		            /* адрес файла-обработчика запроса */
		            url: 'request_handler_ajax_index_page.php',
		            /* метод отправки данных */
		            method: 'POST',
		            /* данные, которые мы передаем в файл-обработчик */
		            data: {"startFrom" : startFrom},
		            /* что нужно сделать до отправки запрса */
		            beforeSend: function() {
		            /* меняем значение флага на true, т.е. запрос сейчас в процессе выполнения */
		            inProgress = true;}
		            /* что нужно сделать по факту выполнения запроса */
		            }).done(function(data){

		            /* Преобразуем результат, пришедший от обработчика - преобразуем json-строку обратно в массив */
		           var data = jQuery.parseJSON(data);

		            /* Если массив не пуст (т.е. новости там есть) */
		            if (data.length > 0) {

			            /* Делаем проход по каждому результату, оказвашемуся в массиве,
			            где в index попадает индекс текущего элемента массива, а в data - сама новость */
			            $.each(data, function(index, data){

				            /* Отбираем по идентификатору блок со статьями и дозаполняем его новыми данными */
				            $("#content").append("<p><b>" + data.title + "</b><br />" + data.regdate + "</p>");
				        });

			            /* По факту окончания запроса снова меняем значение флага на false */
			            inProgress = false;
			            // Увеличиваем на 10 порядковый номер статьи, с которой надо начинать выборку из базы
			            startFrom += 10;
          		  }});
		        }
		    });
		});
	</script>

<div id="Content">
	<?php
		$site = "НТЦ Интернавигация";
		$sitetmp = base64_encode($site);
		$Query = mysqli_query($CONNECT, 'SELECT * FROM post_page WHERE `page_link`="news" ORDER BY `id` DESC LIMIT 10');
		$news = array();
		while ($Row = mysqli_fetch_assoc($Query)) {
			$news[] = $Row;
		}
		?>
		<?php foreach ($news as $newss): ?>
        <p><b><?php echo $newss['title']; ?></b><br />
        <?php echo $newss['regdate']; ?></p>
   		<?php endforeach; ?>
	</div>

Обработчик:
<?php
// C какой статьи будет осуществляться вывод
$startFrom = $_POST['startFrom'];

// Получаем 10 статей, начиная с последней отображенной
$Query = mysqli_query($CONNECT, "SELECT * FROM `post_page` WHERE `page_link`=`news` ORDER BY `id` DESC LIMIT {$startFrom}, 10");
// Формируем массив со статьями
$news = array();
while ($Row = mysqli_fetch_assoc($Query))
{
    $news[] = $Row;
}

// Превращаем массив статей в json-строку для передачи через Ajax-запрос
echo json_encode($news);
?>

Выдает вот такую ошибку,
512d06b198f447c582e4e7be58da9def.PNG
Указывает на вот эту строку : var data = jQuery.parseJSON(data);
Не могу понять в чем проблема. Почему JSON прерывается, прошу вашей помощи, спасибо
  • Вопрос задан
  • 1834 просмотра
Решения вопроса 1
@LiguidCool
Смотрите что возвращает вам ваш ajax - отсюда и плящите. Посмотреть можно выводя через console.log или во вкладке Network отладчика. Может у вас ошибка 500 например ...
Кстати хорошо бы заголовки в ответе сервера прописать - заголовок типа данных и кодировка.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы