gpt4 book ai didi

ajax - Laravel 5.1 Ajax 从 Blade View 获取 html

转载 作者:行者123 更新时间:2023-12-04 13:22:39 25 4
gpt4 key购买 nike

我在加载 myitems.blade View 的 ItemsController 中有一个 myitems($filter) 方法。

该 View 具有作为标签的项目列表和用于获取项目数量的文本框($items 从 myitems 方法传递到 myitems View ,并且项目模型上还有一个模型表单绑定(bind))

我有一个选择框,其中包含选项 1. All、2. Expired 和 3.New

当我更改选择时,我希望从 Controller 中获取新的 $items 并使用新的项目列表重新创建表单。

我正在使用 jquery 来提醒选择已更改。但我无法弄清楚如何从 ajax 调用 myitems($filter) 并重定向以创建 items.blade 页面。

最佳答案

路线

//Note the ? in parameter, it says parameter is optional
Route::get('/myitems/{filter?}',
['as' => 'myitems.list', 'uses' => 'ItemController@myitems']
);

Controller
...
public function myitems(Request $request, $filter = null)
{
if (empty($filter)) $filter=1;

$items = Item::where('item_type', $filter)->get();

// if ajax call just return the partial that displays the list
if ($request->ajax()) {
return view('_itemlist', compact('items'));
}

// passed as options to input select
$filters= [
'All' => '0',
'New' => '1',
'Expired' => '2'
];
return view('itempagewith_defaultitemlist', compact('items','filters'));
}
...

查看

查看 itempagewith_defaultitemlist.blade.php
<div class="container">
{!! Form::model($myitems, ['route' => 'myitems.list', 'class'=>'form-horizontal', 'files' => true]) !!}

<div id="filterselectbox">
<div class="form-group">
{!!Form::label('filterselectbox','*Filter:',['class'=>'control-label']) !!}
{!!Form::select('filterselectbox', $filters, null, ['class'=>'form-control ']) !!}
</div>
</div>
{!! Form::close() !!}

<div id="item-container">
@include('_itemlist')
</div>

<script>
$('#filterselectbox').change(function() {
var id = $('#filterselectbox').val();
var ajaxurl = '{{route('myitems', ':id')}}';
ajaxurl = ajaxurl.replace(':id', id);
$.ajax({
url: ajaxurl,
type: "GET",
success: function(data){
$data = $(data); // the HTML content that controller has produced
$('#item-container').hide().html($data).fadeIn();
}
});
});
</script>

</div>

部分 View _itemlist.blade.php
 <ul>
@foreach ($items as $item)
<li>{{ $item->name }}</li>
@endforeach
</ul>

关于ajax - Laravel 5.1 Ajax 从 Blade View 获取 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33247140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com