Answer the question
In order to leave comments, you need to log in
Laravel 4 Ajax loading?
Hello. Tell me how to implement ajax content loading in Laravel 4. We need the most primitive example. I'm not interested in submitting the form, but in loading the content when you click on the "Show more" button.
Tell me the most primitive example, then I'll figure it out myself.
Let there be several paragraphs with text, for example 5. And the "show more" button. When you click on it, another line is loaded.
Answer the question
In order to leave comments, you need to log in
The implementation is simple.
Add to head to protect against csrf
Adding a button.
<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'=>'[email protected]'));
// Фильтр, срабатывающий перед пост запросом.
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
}
}
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question