@vladimirr89

Как подгружать статьи аяксом по кнопке на laravel?

Я новичок в этих делах, подскажите пожалуйста как правильно настроить подгрузку превьюшек статей при помощи ajax при нажатии на кнопку "еще статьи"?
1. Вот я создал роутер откуда буду забирать новости
Route::get('/getnews', ['as' => 'ajax.getnews', 'uses' => 'AjaxController@morenews']);

2. Создал страницу которая выводит превьюшки по 4 штуки и назначил кнопке "еще статьи" адрес (контроллер выводящий статьи на вьюху сделан и работает)

3. Дальше нужно делать контроллер для аякса, на котором у меня затуп
public function morenews(Request $request){	
		$more_news = News::paginate(4);
		if($request->ajax())
		{
			$data = ... (что конкретно сюда писать не понимаю)
			return responce($data, 200);
		}
	}


4. Далее вообще каша непонятная в моей голове.
Может у кого есть пример нормальный толковый или подскажите как это до конца довести?
  • Вопрос задан
  • 445 просмотров
Пригласить эксперта
Ответы на вопрос 1
Eridani
@Eridani
Мимо проходил
Вот, вообщем, кривожопый пример, который по быстрому накидал как попало.5ad9a0a12c296505520641.png

Вот код
spoiler
<?

/*
 * Демонстрация старого способа работы с базой данных MySQL
 */
 
# Соединение
mysql_connect('localhost', 'root', '') or die('Could not connect: ' . mysql_error());
 
# Выбор базы данных
mysql_select_db('paginate') or die('Не могу выбрать базу данных');
 
 


// количество записей, выводимых на странице
$per_page=2;

	// получаем номер страницы
	if (isset($_POST['page'])) $page=($_POST['page']-1); else $page=0;
	// вычисляем первый оператор для LIMIT
	$start=abs($page*$per_page);	


?>
<?
if($_POST['ajax'] == 1) {
	$data = '';
	// составляем запрос и выводим записи
	// переменную $start используем, как нумератор записей.
	$q="SELECT * from news LIMIT $start,$per_page";
	$res=mysql_query($q);
	while($row=mysql_fetch_array($res)) {
	  $data[] = $row;
	}	
		
	die(json_encode(array('res' => 'success', 'data' => $data)));
}
?>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=win-1251">
	</head>
	<body>
		<div class="news">
			<?
				// составляем запрос и выводим записи
				// переменную $start используем, как нумератор записей.
				$q="SELECT * from news LIMIT $start,$per_page";
				$res=mysql_query($q);
				while($row=mysql_fetch_array($res)) {
				  echo ++$start.". Название новости:  ".$row['heading']."<br>\n";
				}
		
			?>
		</div>
		<button id="showmore" data-page="2">Показа Ышо</button>
		
		
		<script src="https://yastatic.net/jquery/3.1.1/jquery.min.js"></script>
		<script>
			$('#showmore').click(function(){
				
				var page = parseInt($(this).attr('data-page'));
				var offset = parseInt(page);
				$.ajax({
				  type: "POST",
				  url: '/',
				  data: {'ajax' : 1, 'page' : page},
				  dataType: 'json',
				  success: function(data){ 
				  console.log(data);
					
					if(data.res == 'success'){   
						$(data.data).each(function(){
							$('.news').append('Название новости: ' + this.heading + '<br/>');
							
						})
						$('#showmore').attr('data-page', page+1);
					}
					else{

					}
				  },
				  error: function(error) {
					console.log(error);
				  },
				  beforeSend: function() {
					console.log('loading...');

				  },
				  complete: function() {
					console.log('complete!');
				  }
				});
				
				return false;
			})
		</script>		
	</body>
</html>

Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы