Bonjour, j'ai un léger soucis avec jQuery autocomplete. Je recupère correctement les valeurs dont je veux faire l'autocomplete en JSON, mais lorsque je commence à taper dans mon input, j'ai la totalité de mes valeurs qui s'affichent.

Je récupère mes valeurs via une route (sous laravel) :

Route::get('getdata', function(){
    $dimension = Dimension::with('largeur', 'hauteur', 'diametre')->get();

    foreach($dimension as $dim){
        $dimLargeur = $dim->largeur->largeur;
        $dimHauteur = $dim->hauteur->hauteur;
        $dimDiametre = $dim->diametre->diametre;

        $dimensions = "$dimLargeur/$dimHauteur-$dimDiametre";
        $aDim[] = [
            'id' => $dim->id,
            'value' => $dimensions
        ];
    }

    return \Response::json($aDim);
});

et je l'appelle sous un script JS :

<script type="text/javascript">
    $(function() {
        $("#dimension").autocomplete({
            minLength: 2,
            source: function(request, response ) {
                $.ajax({
                    url: "/occasipneus/getdata",
                    dataType: "json",
                    data: {
                        term: request.term
                    },
                    success: function( data ){
                        response(data);
                    }
                });
            }
        });
    });
</script>

Et lorsque je rentre mes valeurs, chaques URL appellées me renvois un tableau contenant la totalité de mes valeurs, de ce genre là :

[{id: 1, value: "10/R-16.5"}, {id: 2, value: "10.0/75-15.3"}, {id: 3, value: "10.0/75-12"},…]

Avec les 415 valeurs qui sont récupérées de ma bdd.

J'aie ssayé la doc de jQuery et differents forums pour m'aider mais je n'ai rien trouvé de concluant pour mon soucis, donc si quelqu'un à une idée de ce que j'ai fait qui cloche, je suis preneur, et je vous remercie d'avance.

4 réponses


iGenezys
Auteur
Réponse acceptée

Bon, j'ai enfin résolu le problème, c'était exactement comme tu l'avais dis : En gros je faisais la récupération des données à la place du filtrage, il m'a juste suffit d'ordonner ça :

<script type="text/javascript">
    $(function() {
        $.ajax({
            url: "/occasipneus/getdata",
            type: "GET",
            dataType: "json",

            success: function( data ){
                $("#dimension").autocomplete({
                    source: data,
                    minLength: 2,
                });
            }
        });
    });
</script>

Merci d'avoir éclairé ma lanterne !

Bonjour.

Premièrement oberver le réseau ==> Quelles données sont transmises dans l'appel ajax

Deuxièmement débugguer côté php --> Les valeurs sont-elles bien récupérées ?

Troisièmement Quelle requête est executée en base?

Bien cordialement

Antho

J'avais pas vu le code php.. mais pour moi là tu filtres que dalle. Tu n'utilises pas les informations envoyées par le Front en ajax.

iGenezys
Auteur

Merci pour ta réponse.

Je confirme bien que je récupère mes informations, si tu veux voir un screenshot :

http://hpics.li/ee2f771

Dans ce cas là, comment je pourrais effectuer ce filtrage ou utiliser mes informations ? J'ai fouillé quasiment tous les forums et la doc de l'autocomplete mais je n'arrive pas à trouver cette réponse, en général les codes se ressemblent et n'ont de différence avec le miens que les noms des variables :/