利用jQuery的Ajax技术实现在文本框输入内容,筛选出json文件中包含用户输入的数据,然后插入指定标签

当用户在id为keyword的input元素中输入内容时,利用jQuery的Ajax技术,筛选出后端data.json文件中包含用户输入内容的数据。然后将筛选出的数据作为文本内容创建li元素并插入到id为list的ul标签中。

HTML内容:

关键字:<input id="keyword" type="text">
<div id="contain">
<ul id="list"></ul>
</div>

data.json文件:

{
        "0": "Head First HTML与CSS",
        "1": "JavaScript高级程序设计",
        "2": "JavaScript DOM编程艺术",
        "3": "高性能网站建设进阶指南",
        "4": "高性能网站建设指南",
        "5": "Web前端黑客技术揭秘",
        "6": "JavaScript权威指南",
        "7": "精通CSS",
        "8": "编写可维护的JavaScript",
        "9": "高性能JavaScript"
}

<input id="keyword" type="text">
<div id="contain">
  <ul id="list"></ul>
</div>

<script>
  // 数据源
  var data = {
    "0": "Head First HTML与CSS",
    "1": "JavaScript高级程序设计",
    "2": "JavaScript DOM编程艺术",
    "3": "高性能网站建设进阶指南",
    "4": "高性能网站建设指南",
    "5": "Web前端黑客技术揭秘",
    "6": "JavaScript权威指南",
    "7": "精通CSS",
    "8": "编写可维护的JavaScript",
    "9": "高性能JavaScript"
  };

  var keywordInput = document.getElementById('keyword');
  var listContainer = document.getElementById('list');

  keywordInput.addEventListener('input', function(e) {
    var keyword = e.target.value;
    var matchedItems = [];

    // 匹配数据源中的项
    for (var key in data) {
      if (data[key].toLowerCase().includes(keyword.toLowerCase())) {
        matchedItems.push(data[key]);
      }
    }

    // 构建自动完成提示列表
    listContainer.innerHTML = '';
    if (keyword && matchedItems.length > 0) {
      matchedItems.forEach(function(item) {
        var li = document.createElement('li');
        li.textContent = item;
        listContainer.appendChild(li);
      });
    }
  });
</script>

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    使用jQuery的Ajax技术实现从文本框中输入内容,然后筛选出data.json文件中包含用户输入的数据,并将筛选出的数据作为文本内容创建li元素插入到指定的ul标签中的步骤如下:

    1. 首先,在HTML中创建一个文本框和一个ul标签,用于显示筛选出的数据。
    <input type="text" id="search-box">
    <ul id="result-list"></ul>
    
    1. 然后,在JavaScript中监听文本框的输入事件,获取用户输入的值。
    $('#search-box').on('input', function() {
      var searchValue = $(this).val();
      // 筛选数据的代码将在下一步实现
    });
    
    1. 接着,使用jQuery的Ajax方法来读取data.json文件中的数据。
    $.ajax({
      url: 'data.json',
      dataType: 'json',
      success: function(data) {
        // 筛选数据的代码将在下一步实现
      }
    });
    
    1. 使用jQuery的filter方法来筛选出包含用户输入的数据。
    var filteredData = data.filter(function(item) {
      return item.name.toLowerCase().indexOf(searchValue.toLowerCase()) > -1;
    });
    
    1. 循环遍历筛选出的数据,创建li元素,并插入到ul标签中。
    var resultList = $('#result-list');
    resultList.empty();
    filteredData.forEach(function(item) {
      var li = $('<li></li>').text(item.name);
      resultList.append(li);
    });
    

    完整代码如下:

    <input type="text" id="search-box">
    <ul id="result-list"></ul>
    
    <script>
      $('#search-box').on('input', function() {
        var searchValue = $(this).val();
        $.ajax({
          url: 'data.json',
          dataType: 'json',
          success: function(data) {
            var filteredData = data.filter(function(item) {
              return item.name.toLowerCase().indexOf(searchValue.toLowerCase()) > -1;
            });
            var resultList = $('#result-list');
            resultList.empty();
            filteredData.forEach(function(item) {
              var li = $('<li></li>').text(item.name);
              resultList.append(li);
            });
          }
        });
      });
    </script>
    

    请注意,上述代码假设data.json文件中包含一个名为name的属性,用于存储需要进行筛选的数据。如果实际情况有所不同,请根据需要修改代码。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^