Pourquoi ma sortie est-elle affichée deux fois dans Blade PHP ?
P粉043470158
P粉043470158 2024-02-26 15:16:22
0
1
345

J'essaie de mettre en place une barre de recherche en direct. La recherche en direct fonctionne mais elle imprime le résultat deux fois, ce qui est ennuyeux. Pourriez-vous s'il vous plaît jeter un oeil à où se situe le problème ? Merci.

Voici mon code de fonction de recherche.

public function search(Request $request)
    {
        if ($request->ajax()) {
            
            $output = "";
            $projects = Project::where('title', 'LIKE', '%' . $request->search . '%')
                        ->where('module_code',$request->module_code)
                        ->get();
            $count = count($projects);
            // $projects = array_unique($projects);
            if ($projects) {
                foreach ($projects as $project) {
                    $output .= '<tr>' .
                        '<td>' . $project->team_number . '</td>' .
                        // '<td>' . $count . '</td>' .
                        '<td>' . $project->lab . '</td>' .
                        '<td>' . '<a href="/projects/' . $project->id . '" style="display:block;"><b>' . $project->title . '</b></a>' . '</td>' .
                        '<td>' . $project-> latest_state. '</td>' .
                        '<td>' . $project->team_member_1 . '</td>' .
                        '<td>' . $project->latest_team_member_1_state . '</td>' .
                        '<td>' . $project->team_member_1 . '</td>' .
                        '<td>' . $project->latest_team_member_1_state . '</td>' .
                        '<td>' . $project->team_member_1 . '</td>' .
                        '<td>' . $project->latest_team_member_1_state . '</td>' .
                        '<td>' . $project->ta . '</td>' .
                        '<td>' . $project->created_at . '</td>' .
                        '<td>' .
                        '<button class="btn-sm btn-info pull-left" onclick="location.href = \'/projects/' . $project->id . '\'">Project Details</button> ' .
                        '</td>' .
                        '</tr>';
                }
                return Response($output);
            }
        }
    }

Voici le script pour la recherche en direct dans php Blade :

<script type="text/javascript">
    const getQueryParams = (params, url)=>{
        let href = url;
        let regexp = new RegExp('[?&]' + params + '=([^&#]*)', 'i');
        let qString = regexp.exec(href);
        return qString ? qString[1] : null;
    }
    $('#search').on('keyup',function(){
        $value = $(this).val();
        //alert($value);
        $qString = getQueryParams('module', window.location.href);
        $queryString = 
        $.ajax({
            type : 'get',
            url  : '{{URL::to('search')}}',
            data : {'search':$value, 'module_code', $qString},
            success:function (data) {
                //console.log(data);
                //alert(data);
                $('tbody').html(data);
            }
        });
    })
</script>

C'est le code de la barre de recherche en php Blade

<div class="col-sm-5">
                        <input type="text"  class="form-control" id="search" name="search" placeholder="Search..."/>
                    </div>

Avant de chercher :

Après avoir recherché :

P粉043470158
P粉043470158

répondre à tous(1)
P粉551084295

Merde, je viens de découvrir la cause de ce problème. C'est un peu idiot. Le code original est ici : https://onecompiler.com/posts/3xy39rm78/php-blade-for-staff, l'erreur existe toujours. Le problème est que j'ai ajouté une balise supplémentaire inutile. La sortie est placée à des endroits étiquetés, tout comme le script :

$('#search').on('keyup',function(){
        $value = $(this).val();
        $qString = getQueryParams('module', window.location.href);
        $queryString = 
        $.ajax({
            type : 'get',
            url  : '{{URL::to('search')}}',
            data : {'search':$value, 'module_code': $qString},
            // data : {'search':$value},
            success:function (data) {
                //console.log(data);
                // alert(data);
                $('tbody').html(data);
            }
        });
    })

Au dernier point du code, il indique au HTML d'imprimer le résultat au niveau de la balise (je ne sais pas si c'est correct). En supprimant la balise tbody ci-jointe, le problème a été résolu.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal