我用 AJAX 做搜索功能。使用foreach循环获取数据后,结果组件不支持livewire(wire:click.prevent)。循环之外的其他标记工作正常。
contact-search.blade.php
<div>
<input type="text" class="form-controller" id="search" name="search"></input>
<main>
</main>
<a href="#" wire:click="test">Click</a>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.13.2/jquery-ui.min.js"></script>
<script type="text/javascript">
$('#search').on('keyup', function () {
$value = $(this).val();
$.ajax({
type: 'get',
url: '{{URL::to('search')}}',
data: { 'search': $value },
success: function (data) {
$('main').html(data);
}
});
});
</script>
<script type="text/javascript">
$.ajaxSetup({ headers: { 'csrftoken': '{{ csrf_token() }}' } });
</script>
</div>
SearchController.php
public function search(Request $request)
{
if($request->ajax())
{
$output="";
// $users= DB::table('users')->where('name','LIKE','%'.$request->search."%")->get();
// $users= User::where('name','LIKE','%'.$request->search."%")->get();
$users= User::where('name',$request->search)->get();
if($users)
{
foreach ($users as $key => $user) {
$output.='<a href="#" wire:click="test" >'.
'click'.
'</a>';
}
return Response($output);
}
}
}
ContactSearch.php
public function test()
{
dd('HEllo');
}
web.php
Route::get('/search',[SearchController::class,'search'])->name('search');
2条答案
按热度按时间oknrviil1#
Livewire是服务器端的。实现客户端请求意味着服务器已经完成加载。此时,Livewire将不再检查是否需要绑定任何东西。此外,Livewire被设计为执行客户端到服务器的请求,反之亦然,因此完全不建议将
$.ajax
与Livewire一起使用。我真的建议阅读docs关于如何开始使用Livewire。b4wnujal2#
我用 AJAX 做搜索功能。使用foreach循环获取数据后,结果组件不支持livewire(wire:click.prevent)。循环之外的一个标记工作正常。我需要解决方案请帮助。