Laravel
3
Вклад в тег
<meta name="csrf-token" content="<?php echo csrf_token(); ?>">
<button type="button" id="loading-example-btn" data-loading-text="Loading..." class="btn btn-primary noradius" style="margin:0px auto">
Показать ещё
</button>
Добавляем блок в который будем загружать контент. Указываем в нём id="content"
<code lang="html">
<div id="content"></div>
</code>
<script>
$('#loading-example-btn').click(function () {
var btn = $(this)
btn.button('loading')
$.ajax({
url: "more", // url запроса
cache: false,
data: { ids: ids }, // если нужно передать какие-то данные
type: "POST", // устанавливаем типа запроса POST
beforeSend: function(request) { // нужно для защиты от CSRF
return request.setRequestHeader('X-CSRF-Token', $("meta[name='csrf-token']").attr('content'));
},
success: function(html) { $('#content').append(html);} //контент подгружается в div#content
}).always(function () {
btn.button('reset')
});
return false
});
</script>
// POST-запрос при нажатии на нашу кнопку.
Route::post('more', array('before'=>'csrf-ajax', 'as'=>'more', 'uses'=>'HomeController@getMoreEvents'));
// Фильтр, срабатывающий перед пост запросом.
Route::filter('csrf-ajax', function()
{
if (Session::token() != Request::header('x-csrf-token'))
{
throw new Illuminate\Session\TokenMismatchException;
}
});
...
public function getMoreEvents()
{
if (Request::ajax()) {
$ids=$_POST['ids']; // в моём случае пост запросом передается массив чисел вида [1,2,3,4...], здесь я этот массив принимаю.
return View::make('home.more')->with('more', Model::whereNotIn('id','!=', $ids))->get(); //делаем запрос в базу данных, получаем статьи в которых нет id из массива $ids
}
}