Ограничить сектор поиска по адресу (возможно баг)
Плагин работает, но ничего не выдает. Всегда пустой результат. Покопавшись в заголовках увидел, что вместе с моим ограничением на поиск адреса по Москве добавляется переменная locations_boost. Как я понял это мой адрес (кстати определяется не правильно, у меня Ростов-на-Дону, а выдается Саратов). Может ли это вызывать коллизию? Когда мы ограничились Москвой и locations_boost идет по Саратову?
<input id="delivery-address-text" /> <script type="text/javascript"> $("#delivery-address-text").focusin(function () { $("#delivery-address-text").suggestions({ serviceUrl: "https://suggestions.dadata.ru/suggestions/api/4_1/rs", token: "f76f0cc041cd3b8adce811efff8aae6359a27aa0", type: "ADDRESS", //count: 5, constraints: { // ограничиваем поиск (в тестируемом примере используется Москва) locations: {region: shop_app.city_name}, deletable: true }, /* Вызывается, когда пользователь выбирает одну из подсказок */ onSelect: function (suggestion) { console.log(suggestion); } }); }) </script>
Request Headers POST /suggestions/api/4_1/rs/suggest/address HTTP/1.1 Host: suggestions.dadata.ru Connection: keep-alive Content-Length: 738 X-Version: 16.8.9 Origin: http://127.0.0.1:8000 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.87 Safari/537.36 Content-Type: application/json Accept: application/json, text/javascript, */*; q=0.01 Authorization: Token f76f0cc041cd3b8adce811efff8aae6359a27aa0 Referer: http://127.0.0.1:8000/tmp Accept-Encoding: gzip, deflate, br Accept-Language: ru,en;q=0.8,en-US;q=0.6 --------------- Request Payload {"locations_boost":[{"country":"Россия","region_fias_id":"327a060b-878c-4fb4-8dc4-d5595871a3d8","region_kladr_id":"2600000000000","region_with_type":"Ставропольский край","region_type":"край","region_type_full":"край","region":"Ставропольский","city_fias_id":"2a1c7bdb-05ea-492f-9e1c-b3999f79dcbc","city_kladr_id":"2600000100000","city_with_type":"г Ставрополь","city_type":"г","city_type_full":"город","city":"Ставрополь","fias_id":"2a1c7bdb-05ea-492f-9e1c-b3999f79dcbc","fias_level":"4","kladr_id":"2600000100000","capital_marker":"2","okato":"07401000000","oktmo":"07701000"}],"locations":[{"region":"Москва"}],"restrict_value":false,"query":" ","count":5}
Ответ
Добрый день! Коллизий быть не должно. Пожалуйста, дайте ссылку на страницу, где воспроизводится проблема.
Код подключения выглядит нормальным, за исключением того, что плагин инициализируется внутри события focusin. Не надо так с ним :–)
Данные на странице могут меняться, по-этому решил сделать инициализацию в момент когда пользователь начал заполнять поле.
Страница на локалхосте. Что я могу еще проверить?
Оказалось работает только москва, остальные города выдает пустоту:
Записал видео: https://youtu.be/QQh_pKbiFW0
Программный код без изминений.
Вы устанавливаете ограничение на поле region (locations: [{ region: "Ростов-на-Дону" }]), а Ростов-на-Дону — это город (city). Поэтому подсказок и нет. Либо ставьте ограничение на city, либо на kladr_id.
Понял, спасибо.
Было бы здорово для демонстрации ограничений региона/города сделать более простые примеры. Я разбирался минут 10 чтобы только понять что происходит в вашем скрипте.
Ну и документации вообще не смог найти.
А какой скрипт оказался сложным для понимания? Дайте ссылку, пожалуйста.
Документация: https://dadata.ru/suggestions/usage/
Подробности: https://dadata.ru/help/suggestions
Сервис поддержки клиентов работает на платформе UserEcho
Добрый день! Коллизий быть не должно. Пожалуйста, дайте ссылку на страницу, где воспроизводится проблема.
Код подключения выглядит нормальным, за исключением того, что плагин инициализируется внутри события focusin. Не надо так с ним :–)