Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery ui Jquery ui自动完成-建议使用外部json_Jquery Ui_Autocomplete - Fatal编程技术网

Jquery ui Jquery ui自动完成-建议使用外部json

Jquery ui Jquery ui自动完成-建议使用外部json,jquery-ui,autocomplete,Jquery Ui,Autocomplete,我正在使用jQueryUI自动完成 我的问题是,当我调用外部json时,suggest函数停止工作 $(document).ready(function() { $('.comu').autocomplete({ source: function(request, response) { $.ajax({ url: "https://raw.githubusercontent.com/edusl/test/master/municipios1.json",

我正在使用jQueryUI自动完成

我的问题是,当我调用外部json时,suggest函数停止工作

$(document).ready(function() {
  $('.comu').autocomplete({
    source: function(request, response) {
      $.ajax({
        url: "https://raw.githubusercontent.com/edusl/test/master/municipios1.json",
        dataType: "json",
        success: response
      });
    },
    minLength: 0,
    autoFocus: true,
    select: function(event, ui) {
      event.preventDefault();
      $(".comu").val(ui.item.label);
    },
  });
});
我的代码示例:


提前谢谢

我想你可能已经找到了回答这个问题的人。但这里有一个解决方案

$(document).ready(function() {
  $('.comu').autocomplete({
    source: function(request, response) {
      $.ajax({
        url: "https://raw.githubusercontent.com/edusl/test/master/municipios1.json",
        dataType: "json",
        success: function(jData) {
          var results = [];
          $.each(jData, function(ind, val) {
            if (val.label.toLowerCase().indexOf(request.term) === 0) {
              results.push(val);
            }
          });
          response(results);
        }
      });
    },
    minLength: 0,
    autoFocus: true,
    select: function(event, ui) {
      event.preventDefault();
      $(".comu").val(ui.item.label);
    },
  });
});
工作示例:

AJAX请求将只返回所有结果,这就是传递给响应的结果。所以,如果您在将其传递给响应之前不进行过滤,那么最终将得到一个完整的列表

这将使用indexOf过滤列表,但您可以使用任何您喜欢的方法

下面是另一个可以减少HTTP开销的解决方案:

var m = [];
$(document).ready(function() {
  $.getJSON("https://raw.githubusercontent.com/edusl/test/master/municipios1.json", function(result) {
    $.each(result, function(ind, val) {
      m.push(val);
    });
  });

  $('.comu').autocomplete({
    source: m,
    minLength: 0,
    autoFocus: true,
    select: function(event, ui) {
      event.preventDefault();
      $(".comu").val(ui.item.label);
    },
  });
});
工作示例:


这将一次性获取所有数据并填充数组。然后,Autocomplete可以像平常一样使用它。

欢迎使用堆栈溢出。我注意到的第一件事是你没有向你的url传递任何数据,那么你希望得到什么?