【发布时间】:2020-10-16 06:37:40
【问题描述】:
我正在尝试创建一个搜索栏,当我输入他们的名字时,它将显示我从开放数据 API 获得的学校的名字。
API:
[ {
"address" : "123 Street",
"name" : "First School ....",
"website" : {
"url" :
"http://......."
}
}
, {
"address" : "123 Bay",
"name" : "Second School ....",
"website" : {
"url" :
"http://......."
}
} ....etc
我想要的是,如果我在搜索栏中输入单词“first”,就会出现 First School。
到目前为止,在我的 html 中,当我单击“搜索”按钮时,它会更改我的 URL,但始终显示每个学校名称。我不确定我的下一步是什么......?
感谢您的宝贵时间。
我的 .js 文件:
let name = 'name';
const api = 'https...api website... .json' +
`$where=name LIKE '%${name}%'` +
'&$order=name';
const url = encodeURI(api);
document.addEventListener("DOMContentLoaded",load);
function load(){
fetch('https:....api website... .json')
.then(function(result) {
return result.json();
})
.then(function(data) {
listSchools(data);
});
}
function listSchools(schoolData){
let body = document.getElementsByTagName("body")[0];
let footer = document.getElementsByTagName("footer")[0];
let input = document.getElementById('input'); //id from HTML
for(let i = 0; i<schoolData.length; i++){
let keys = Object.keys(schoolData[i]);
let values = Object.values(schoolData[i]);
let section = document.createElement("section");
let h1 = document.createElement("h1");
let ul = document.createElement("ul");
h1.innerHTML = `${schoolData[i].name}`;
section.appendChild(h1);
section.appendChild(ul);
body.insertBefore(section, footer);
}
}
【问题讨论】:
-
我不确定您是否需要使用 VanillaJS 或允许使用其他库,但使用
ajax与select2结合使用会很容易。
标签: javascript html json api opendata