简体   繁体   中英

jQuery autocomplete dynamic ajax

I'm trying to build a search input with the autocomplete feature. However, the suggestions depend on the input and are not static - which means that I have to retrieve the list every time the user types into the field. The suggestions are based on Google autosuggest: " http://google.com/complete/search?q=TERM&output=toolbar ".

I'm currently using http://easyautocomplete.com .

This is my code:

        var array = [];
        var options = {
            data: array
        };

        $("#basics").easyAutocomplete(options);

        $("#basics").on("keyup",function() {
            var keyword = $(this).val();
            array = [];
            updateSuggestions(keyword);
        });


        function updateSuggestions(keyword) {

            $.ajax({
                type: "POST",
                url: "{{ path('suggestKeywords') }}",
                data: {keyword:keyword},
                success: function(res){
                    var res = JSON.parse(res);

                    for(var i in res)
                    {
                        var suggestion = res[i][0];
                        array.push(suggestion);
                        console.log(suggestion);
                    }

                }
            });

            var options = {
                data: array
            };
            $("#basics").easyAutocomplete(options);

        }

I know this is not a very good way to do this - so do you have any suggestions as to how to do it?

 <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>jQuery UI Autocomplete functionality</title> <link href="http://code.jquery.com/ui/1.10.4/themes/ui-lightness/jquery-ui.css" rel="stylesheet"> <script src="http://code.jquery.com/jquery-1.10.2.js"></script> <script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script> <!-- Javascript --> <script> $(function() { var availableTutorials = [ "ActionScript", "Boostrap", "C", "C++", ]; $("#automplete-1").autocomplete({ source: availableTutorials }); }); </script> </head> <body> <!-- HTML --> <div class="ui-widget"> <p>Type "a" or "s"</p> <label for="automplete-1">Tags:</label> <input id="automplete-1"> </div> </body> </html> 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM