JSON Array for jQuery UI Autocomplete

JSON Array for jQuery UI Autocomplete

本文关键字:UI Autocomplete jQuery for Array JSON      更新时间:2023-09-26

任务是获取带有城市名称数组的本地JSON文件,并将它们设置为自动完成。没有关于JSON数组的确切信息,总是谈论对"键"-"值"。所以我有一个问题:是否可以在 JSON 中使用带有单个项目的数组,如果是我的代码错误在哪里?
杰伦

    [
    "Minsk",
    "London",
    "Riga",
    "Vilnius",
    "Warszaw",
    "Paris",
    "Moscow",
    "Tallin",
    "Berlin",
    "Amsterdam",
    "Oslo",
    "Helsinki"
]  

.JS

$('#tags').autocomplete({
    source: function(request, response) {
        var result = $.ajax({
            url: '../source.json',
            method: 'GET',
            dataType: 'json',
            success: function(data) {
                var array = [];
                response($.each( data, function(item) {
                    array.push(item);
                    return array;
                }));
                return array;
            }
        });
    }
});  

JSON 确实支持数组和对象。

代码不会将结果返回到源。事实上,你不能等待 $.ajax(( 完成而不使用setInterval来检查它或类似的东西。最好的方法是在页面加载时访问一次 JSON 文件并从那里引用源。

尝试:

var dict = [];
$.ajax({
  url: 'https://dl.dropboxusercontent.com/u/100496307/source.json',
  method: 'GET',
  dataType: 'json',
  success: function(data) {
    $.each(data, function() {
      dict.push(this.toString());
    });
    return dict;
  }
});
$('#tags').autocomplete({
  source: dict
});
$('#tags').keydown(function() {
  console.log(dict);
});
<head>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  <script src="https://code.jquery.com/ui/1.11.2/jquery-ui.min.js"></script>
  <link rel="stylesheet" href="https://code.jquery.com/ui/1.11.2/themes/black-tie/jquery-ui.css" />
</head>
<body>
  <input type="text" id="tags" />
</body>