首页 > 解决方案 > jquery自动完成与回调ajax json elasticsearch

问题描述

何时对 Elasticsearch 做出响应时会发生这种情况:

http://localhost:9200/hobbie/_search?callback=jQuery112407134696443551507_1568816372627&term=hobby&_=1568816372628

我真的不知道为什么回调在请求中。那些人知道我做错了什么吗?这将是一个很大的帮助。

$( function() {
function log( message ) {
  $( "<div>" ).text( message ).prependTo( "#log" );
  $( "#log" ).scrollTop( 0 );
}

var zoekterm = $("#birds").text();
var search_request = "http://localhost:9200/hobbie/_search";    

$( "#birds" ).autocomplete({

  //serviceUrl: search_request,

  source: function( request, response ) {

    $.ajax( {
      url: search_request,
      type: 'GET',
      dataType: "jsonp",
      data: { term: request.term },
        contentType: "application/json; charset=utf-8",
      success: function( data ) {
        response( data );
      }
    } ); 
  },
  minLength: 2,
  select: function( event, ui ) {
    log( "Selected: " + ui.item.value + " aka " + ui.item.names );
  }
} );

});

标签: jqueryajaxelasticsearchjquery-ui

解决方案


我认为您只是希望使用 JSON 结果执行 GET。如果是这样,请考虑以下代码:

$(function() {
  function log(message) {
    $("<div>").text(message).prependTo("#log");
    $("#log").scrollTop(0);
  }

  var zoekterm = $("#birds").text();
  var search_request = "http://localhost:9200/hobbie/_search";

  $("#birds").autocomplete({
    source: function(request, response) {
      $.getJSON(search_request, {
          term: request.term
        },
        function(data) {
          response(data);
        });
    },
    minLength: 2,
    select: function(event, ui) {
      log("Selected: " + ui.item.value + " aka " + ui.item.names);
    }
  });
});

尽量保持简单。

另请参阅:jQuery.getJSON()


推荐阅读