【发布时间】:2015-12-13 19:15:42
【问题描述】:
如何创建一个搜索表单来搜索 JSON 文件中输入的术语?
因此,如果搜索词等于位置对象内的标题,它应该返回该对象信息。如果没有匹配,给用户反馈没有找到项目
我创建了一个搜索输入:
<form action="" method="get">
<input id="search" type="text" placeholder="Search term">
<input type="submit" class="button">
</form>
我的 JSON 如下所示:
{
"title": "Locations",
"locations": [
{
"title": "New York",
"url": "api/newyork.js"
},{
"title": "Dubai",
"url": "api/dubai.js"
},{
"title": "Netherlands",
"url": "api/netherlands.js"
},{
"title": "Lanzarote",
"url": "api/lanzarote.js"
},{
"title": "Italy",
"url": "api/italy.js"
}
]
}
更新:
我想出了以下,使用 jQuery:
$("#search").change(function() {
var arrival = $(this).val();
$.getJSON( "api/videoData.js")
.done(function(data) {
// update your ui here
console.dir(data.pages);
var dataArr = data.pages;
// Iterate over each element in the array
for (var i = 0; i < dataArr.length; i++){
// look for the entry with a matching `code` value
if (dataArr[i].title == arrival){
// we found it
console.log(dataArr[i].title);
} else {
console.log('Houston, we have a problem');
}
}
}).fail(function(data) {
// handle error here
console.log('no results found');
});
});
这是有效的,只是它应该完全按照存储在 JSON 中的方式输入。
因此,当您搜索“意大利”并使用小写类型时,它不会找到该对象。此外,当您搜索时,它不会提供任何条目:ne。我想将荷兰和纽约作为搜索结果。
【问题讨论】:
-
您自己尝试过任何 javascript 吗?如果是,请提供代码
-
@depperm,还没有。当用户单击提交按钮时,我不知道如何获取该值,而不是搜索该术语..
-
对于小写和部分匹配只需说:_.startsWith(dataArr[i].title.toLowerCase(),arrival.toLowerCase())
-
为什么要通过arrivaldate URL参数传递搜索值?您是否打算传递在另一个输入中输入的日期?你能在你的问题中澄清这一点吗?
-
感谢您的提及。我认为这不再是代码的一部分。我将其从代码中删除。
标签: javascript php json