我是jQuery,JSON和API的新手,我正在尝试构建一个小型Web应用程序,当用户键入aa service.type.name
和{{1}时,该应用程序会在该区域内调出当地医院}。例如,“N77JN中的疝气修复”。
我有一个小的JSON文件设置,其中包含一些列出其地址和服务的医院对象。
postcode
如果我可以使用此UK Postcodes API来引用我的JSON文件中的地址并根据邮政编码是否匹配或在搜索查询的3英里范围内返回结果,我正在努力解决问题。显然,您可以使用以下代码执行此操作:
{
"places":[
{
"name": "The Whittington Hospital",
"address": {
"street": "Magdala Ave",
"town": "Islington",
"city": "London",
"postcode": "N195NF"
},
"service": [{
"type": [
{ "name": "Hernia Repair" },
{ "name": "Hip Replacement" },
{ "name": "Crohn's Disease" },
{ "name": "Pregnancy" }
]
}]
}
...
]
}
我的HTML看起来像这样:
http://uk-postcodes.com/postcode/nearest?postcode=n77jn&miles=3&format=json
我的JS喜欢这样:
<form id="fetch">
<input type="text" id="query">
<input type="submit" id="search" value="Go">
</form>
基于对JS的基本理解,我应该可以进行搜索,例如“N77JN中的疝气修复”,它存储在$(function() {
var data;
$.getJSON('data.json', function(jsondata) { data = jsondata; });
function performSearch(e){
e.preventDefault();
if (data == undefined) return; // do nothing if json is not yet loaded
var search = $('#query').val();
var output="<h2>Search results for " + search + "</h2>";
for (var i in data.places) {
for (var ind in data.places[i].service[0].type) {
if (data.places[i].service[0].type[ind].name == search) {
output+="<h3>" + data.places[i].name + "</h3>";
} else {}
};
};
document.getElementById("main").innerHTML=output;
};
$('#fetch').on('submit', performSearch);
});
变量中,search
它位于“{”{ 1}},它将该字符串分成一个数组,给我两个值(“疝气修复”,“N77JN”)。我是在正确的轨道上吗?
我想我可以使用这两个值来查看Postcode API并为该区域的医院提供结果。我只是不确定如何解决这个问题。
任何帮助我指出正确方向的人都会受到赞赏。
提前致谢!
答案 0 :(得分:0)
您可以这样做:
var serviceName = search.split(" in ")[0];
var postcode = search.split(" in ")[1];
var matches = $.grep(data, function (e) {
return (e.places.address.postcode == element && e.places.service.type.name == serviceName ) });
现在可以根据需要使用matches
数组。希望它有所帮助:)
注意:我认为你应该考虑为两个输入使用两个单独的文本框(邮政编码和服务类型),用户可能并不总是在'中键入'并且两边都有空格。