php wire:click.prevent函数在foreach循环中不工作

fjaof16o  于 2023-05-05  发布在  PHP
关注(0)|答案(2)|浏览(103)

我用 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');
oknrviil

oknrviil1#

Livewire是服务器端的。实现客户端请求意味着服务器已经完成加载。此时,Livewire将不再检查是否需要绑定任何东西。此外,Livewire被设计为执行客户端到服务器的请求,反之亦然,因此完全不建议将$.ajax与Livewire一起使用。我真的建议阅读docs关于如何开始使用Livewire。

b4wnujal

b4wnujal2#

我用 AJAX 做搜索功能。使用foreach循环获取数据后,结果组件不支持livewire(wire:click.prevent)。循环之外的一个标记工作正常。我需要解决方案请帮助。

相关问题