jquery autocomplete当输入错误时ajax不用于自动更正

t2a7ltrp  于 2021-06-14  发布在  ElasticSearch
关注(0)|答案(1)|浏览(374)

我正在尝试使用flask、elasticsearch和jquery制作一个类似于google搜索栏的项目,它将根据给定的输入自动给出建议,并且在错误输入时自动给出正确的建议。我已经成功地使用了拼写正确的自动建议,但是当输入错误时,来自elasticsearch的正确建议数据会出现在浏览器控制台中,但不会出现在autocomplete下拉列表中。我使用pyspark将数据插入elasticsearch。我认为问题与js文件有关,但不知道是我的js文件还是jqueryui文件。我做错什么了?
js公司:

$(document).ready(function () {
    const $source = document.querySelector('#source');
    const $result = document.querySelector('#result');

    const typeHandler = function (e) {
        $result.innerHTML = e.target.value;
        console.log(e.target.value);

        $.ajax({
            url: "/ajax_call",
            type: 'POST',
            dataType: 'json',
            data: { 'data': e.target.value },
            success: function (html) {
                var data = html.aggregations.auto.buckets
                var bucket = []

                $.each(data, (index, value) => {
                    bucket.push(value.key)
                });

                console.log(bucket)
                $("#source").autocomplete({
                    source: bucket
                });
            }
        });
    }
    $source.addEventListener('input', typeHandler)
});

正确输入:

输入错误:

输入错误的正确数据

oogrdqng

oogrdqng1#

考虑下面的例子。

$(function() {
  const $source = $('#source');
  const $result = $('#result');

  $source.autocomplete({
    source: function(request, response) {
      $.ajax({
        url: "/ajax_call",
        type: 'POST',
        dataType: 'json',
        data: {
          'data': request.term
        },
        success: function(html) {
          var data = html.aggregations.auto.buckets;
          var bucket = [];

          $.each(data, (index, value) => {
            bucket.push(value.key);
          });

          console.log(bucket);
          response(bucket);
        }
      });
    }
  });
});

查看更多:
https://jqueryui.com/autocomplete/#remote-jsonp公司
https://api.jqueryui.com/autocomplete/#option-来源

相关问题