Чтобы обновить и изменить содержимое страницы без перезагрузки страницы в Laravel 5.4 я сделать следующее:
Сначала создайте вид лезвия в «вид» папку под названием «container.blade.php» будет содержать следующие код (в данном случае выберите поле, которое делает список способностей из пакета Bouncer (но вы можете использовать @foreach на любой коллекции Laravel вам нравится):
<select>
{{ $abilityList = Bouncer::role()::where('name','admin')->first()->getAbilities()->pluck('name') }}
@foreach ($abilityList as $ab)
<option value="{{ $ab }}">{{ $ab }}</option>
@endforeach
</select>
Добавить это вам файл главного лезвия (например, home.blade.PHP) удостоверяясь использовать DIV с идентификатором вы можете ссылаться:
<div id="abilityListContainer">
@include('container')
</div>
Теперь на вашем главном файле лезвия (например home.blade.php) добавить кнопку, которая будет запускать функцию, которая будет взаимодействовать с Laravel контроллер:
<input type="button" value="reload abilities" onClick="reloadAbilities()"></input>
Затем добавить JavaScript для этой функции, это загружает сгенерированный HTML в ваш сНу контейнер (обратите внимание на «/ updateAbility» маршрут рядом с «.get» - это маршрут Laravel который мы установим на следующем этапе):
var reloadAbilities = function()
{
var $request = $.get('/updateAbility', {value: "optional_variable"}, function(result)
{
//callback function once server has complete request
$('#abilityListContainer').html(result.html);
});
}
Теперь мы установили маршрут Laravel для этого действия, это указывает на наш контроллер и вызывает функцию «updateAbilityContainer». Так редактировать/маршруты/Интернет/файл PHP, чтобы иметь следующий маршрут:
Route::get('updateAbility', array('as'=> 'updateAbility', 'uses'=>'[email protected]'));
Наконец, в приложении/Http/Контроллеры сделать файл «abilityController.php» (вы можете также использовать «PHP ремесленник грим: контроллер abilityController «). Теперь добавьте эту функцию для обработки изменений, генерировать HTML и вернуть его в яваскрипте функции (обратите внимание, вы можете также использовать пространство имен, а):
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Input;
class AbilityController extends Controller
{
public function updateAbilityContainer()
{
// use this if you need to retrieve your variable
$request = Input::get('value');
//render and return the 'container' blade view
$html = view('container', compact('view'))->render();
return response()->json(compact('html'));
}
}
Thats это, ваше лезвие «контейнер» теперь будет перезагружайтесь, когда вы нажимаете кнопку, и любые изменения в коллекции, которую вы создаете, должны обновляться без перезагрузки страницы.
Надеюсь, это заполняет некоторые пробелы, оставленные в других ответах. Надеюсь, это сработает для вас.
Может ли это использовать $ .ajax или $ .get или больше для расширения? Конечно, я бы хотел добавить спиннер. Но в основном он хочет, чтобы он был расширен, и это, вероятно, плохой метод. – bradley546994
Это путь, но вы должны вернуть визуализированное представление с помощью JSON: '$ html = view ('partials.table', $ data) -> render(); return response() -> json (compact ('html')); '. – JasonK
@JasonK, тогда я не мог использовать 'jQuery.load()'! – Webinan