我有一个EasyAutocomplete输入字段,该字段输入通过postcodes.io API检索的英国邮政编码。我正在使用自动完成功能(api.postcodes.io/postcodes/{input}/autocomplete),该功能以以下格式返回给定输入的可能匹配项列表。
输入:“ a”
输出:
{
"status": 200,
"result": [
"AB10 1AB",
"AB10 1AF",
"AB10 1AG",
"AB10 1AH",
"AB10 1AL",
"AB10 1AN",
"AB10 1AP",
"AB10 1AQ",
"AB10 1AR",
"AB10 1AS"
]
}
但是,如果没有匹配的邮政编码,结果将返回null(请注意,状态仍为200)。
输入:“ asdasdasdasdas”
输出:
{
"status": 200,
"result": null
}
我编写的代码可以成功检索邮政编码,但是当我键入与任何邮政编码都不匹配的内容时,EasyAutocomplete会引发错误,并且除非刷新页面,否则输入字段将不可用。我试图找到一种在EasyAutocomplete执行之前检测结果是否为null的方法。
JavaScript:
function postcodeLookup() {
var options = {
url: function(phrase) {
if (phrase !== "") {
phrase.replace(/\s/g, "");
return "https://api.postcodes.io/postcodes/" + phrase + "/autocomplete";
}
},
ajaxSettings: {
dataType: "json"
},
listLocation: "result",
requestDelay: 300
};
return options;
}
$("#p-pc").easyAutocomplete(postcodeLookup());
输入字段:
<input id="p-pc" placeholder="Postcode" maxlength="10" name="pc"/>
如果不发出请求,您将无法提前知道将得到一个空数组还是非空数组。也许还要添加easyAutoComplete(在您实际发出请求的地方)。