EasyAutocomplete: определить, является ли атрибут JSON пустым - PullRequest
0 голосов
/ 10 марта 2020

У меня есть поле ввода EasyAutocomplete, в котором используется почтовый индекс Великобритании, полученный из API postcodes.io . Я использую функцию автозаполнения (api.postcodes.io/postcodes/ndominput‹/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 выдает ошибку и делает поле ввода непригодным для использования, если страница не обновлена. Я пытаюсь найти способ определить, равен ли результат значению NULL до выполнения EasyAutocomplete.

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"/>

1 Ответ

0 голосов
/ 10 марта 2020

Без запроса вы не сможете заранее узнать, получите ли вы пустой или непустой массив. Возможно, добавьте easyAutoComplete (где вы на самом деле делаете запрос).

...