javascript - JQuery 搜索不显示结果

标签 javascript jquery json

我尝试使用 JQuery 代码搜索 JSON 文件,但结果未显示。

这是我的代码:

    $(document).ready(function() {
        $.getJSON('subjects.json', function(data) {
        $("#searchInput2").keyup(function () {
          var searchField = $(this).val();
          if (searchField === "") {
            $("#searchdisplay").html("");
            return;
          }

          var regex = new RegExp(searchField, "i");
          var output = '<div class="row">';

          $.each(data, function (key, val) {
            if (val.name.search(regex) != -1) {
              output += '<div">';
              output +=
                '<div class="form-group"><a class="dropdown-item">' +
                val.name +
                "</a></div>";
            }
          });
          output += "</div>";
          $("#searchdisplay").html(output);
        });


        });
    });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


  <div class="form-group">
        <input  type="search"
          class="form-control"
          name="searchInput2"
          id="searchInput2"
        />
      </div>
      
      
       <div class="searchdisplay"> 

这是我的 JSON 文件:

    {
   "Subjects": [
       {
          "name": "Programim 1",
          "Code": "01",
          "Semester": "1",
          "Type": ["Mandatory","Elective"],
          "Professor": "Profesor 1",
          "Credits": "7",
          "Grade": "9",
          "Keywords": ["css","js","jquery","php"],
          "Lecture": ["lecture","practical"]
       },

       {
         "name": "Java programim",
         "Code": "02",
          "Semester": "2",
          "Type": ["Mandatory","Elective"],
          "Professor": "Profesor2",
          "Credits": "6",
          "Grade": "9",
          "Keywords": ["css","js","jquery","php"],
          "Lecture": ["lecture","practical"]
       },

       {
         "name": "Programim 3 ",
        "Code": "03",
         "Semester": "7",
         "Type": ["Mandatory","Elective"],
         "Professor": "Profesor 3",
         "Credits": "6",
         "Grade": "7",
         "Keywords": ["css","js","jquery","php"],
         "Lecture": ["lecture","practical"]
      },

      {
         "name": "Computer architecture",
        "Code": "04",
         "Semester": "2",
         "Type": ["Mandatory","Elective"],
         "Professor": "Profesor 4",
         "Credits": "4",
         "Grade": "6",
         "Keywords": ["css","js","jquery","php"],
         "Lecture": ["lecture","practical"]
      },


      {
         "name": "Web Design",
        "Code": "05",
         "Semester": "4",
         "Type": ["Mandatory","Elective"],
         "Professor": "Profesor 5",
         "Credits": "4",
         "Grade": "7",
         "Keywords": ["css","js","jquery","php"],
         "Lecture": ["lecture","practical"]
      }


   ]
         

   

}

我想在搜索主题名称时显示主题的所有信息,那么我需要对代码进行哪些更改才能使其正常工作。我是否需要以不同的方式处理搜索方法,或者我可以使用现有的代码进行一些更改吗?

最佳答案

当您的代码迭代 JSON 文件给出的数据时,您可以使用 JQuery $.each 方法迭代 JSON 文件中的所有值。但是,您的 JSON 文件不是数组,而是对象。要迭代 JSON 文件中的所有 Subjects,请迭代 data.Subjects,而不是迭代 data

$.each(data.Subjects, function(key, val) {
  if (val.name.search(regex) != -1) {
    output += '<div">';
    output +=
      '<div class="form-group"><a class="dropdown-item">' +
      val.name + JSON.stringify(val) +
      "</a></div>";
  }
});

然后,使用 val 您可以根据需要显示数据。在本例中,我使用 JSON.stringify 显示 subjects.json 文件中的所有数据,但我确信您可以为您的应用程序实现更漂亮的东西。例如,您可以使用 val.Professor 访问某个学科的教授,并使用 output 变量显示该教授。

关于javascript - JQuery 搜索不显示结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70049483/

相关文章:

javascript - 如何使用 setInterval 从 ajax 页面本身重复 ajax 调用?

javascript - 在 Javascript 中保护 JSON?

javascript - 防止单元格拖拽

javascript - 如何使用javascript或jquery动态检查表格每一行中复选框的值

arrays - jq合并不重复的json数组

java - 使用 JSON 进行 Spring Security 错误处理

javascript - Passport-Facebook 和 JavaScript Facebook SDK

javascript - 使用 JAM 根据先前的选择值更改选择选项

javascript - 如何使用 SoundCloud API 播放歌曲

arrays - 是否有任何JQ内置函数返回JSON数组中元素的索引?