Как определить город по IP на сайте (dadata API)
Как реализовать
Создаем форму (1 колонка с кодом ip) и получаем IP из спец параметра userIP:
CREATE PROCEDURE [dbo].[fm_watch_getCityByIP_getItem]
@itemID int,
@username nvarchar(256),
@parameters ExtendedDictionaryParameter readonly
AS
BEGIN
declare @ip nvarchar(128) = (select Value2 from @parameters where [Key] = 'userIP')
select @ip ip
select 'h3' headerTag
END
При нажатии на кнопку делаем API запрос:
CREATE PROCEDURE [dbo].[fm_watch_getCityByIP_saveItem]
@username nvarchar(256),
@itemID int,
@fieldip nvarchar(256) = ''
AS
BEGIN
-- 1 SELECT (Result, Msg)
select 1 Result, ' ' Msg
-- 2 SELECT
select 'apirequest' type, 'dadataCityByIP' code, 'ip' p1_name, @fieldip p1_value
END
Процедура Request API запроса (формат json, метод Get):
CREATE PROCEDURE [dbo].[api_dadataCityByIP_request]
@parameters ExtendedDictionaryParameter READONLY, -- входящие параметры для внутренней обработки (используйте Key, Value2)
@username nvarchar(32) -- текущий пользователь.
AS
BEGIN
declare @ip nvarchar(20) = ''
select @ip = Value2 from @parameters where [Key]='ip'
-- SELECT 1 Msg, Result, Url (адрес, куда будет идти запрос)
select '' Msg, 1 Result, 'https://suggestions.dadata.ru/suggestions/api/4_1/rs/iplocate/address?ip='+ @ip Url --, 'application/json' ContentType
-- SELECT 2 PARAMETERS - параметры, которые будут передаваться во внешний источник
select 'Authorization' name, 'Token '+ '_________________________' value, 'header' [type] -- form (в форме передается), header (в http headers), get запросы передавайте прямо в URL
END
Процедура Response без изменений:
CREATE PROCEDURE [dbo].[api_dadataCityByIP_response]
@response nvarchar(max),
@parameters ExtendedDictionaryParameter READONLY,
@username nvarchar(32)
AS
BEGIN
-- SELECT 1
select '' Msg, 1 Result, @response Response
END
и JS коллбек сохранения формы для обработки ответа API:
as.formcallbacks["watch_getCityByIP_saveItem"] = function(data){
var ss = JSON.parse(data.additionalData)[0].items;
console.log("API response", ss);
for (var i = 0; i< ss.length; i++){
var el = ss[i];
if(el.key=="response"){
var ss1 = JSON.parse(el.value2);
var s = "";
if(ss1 && ss1.location){
var loc = ss1.location;
console.log("Loc data", loc);
s+="Город: " + loc.value + "
";
s+="Полное название: " + loc.unrestricted_value + "
";
s+= "
Остальные параметры локации можно посмотреть в консоли браузера
"
as.sys.bootstrapAlert(s, {type: "success", delay: 1000000});
}
}
}
}
Последние обновления
Интеграции 24.11.2025
Разное 24.11.2025
Форма 15.11.2025
Визуализация 02.11.2025
Таблица 08.10.2025
Форма 26.09.2025
Таблица 23.09.2025
Разное 23.08.2025
Таблица 21.08.2025
Форма 20.08.2025
Таблица 18.08.2025
Таблица 21.06.2025
Форма 07.06.2025
Форма 29.03.2025
Форма 17.02.2025
Файлы и документы 10.01.2025
Форма 01.11.2024
Форма 23.10.2024
SQL-инструмент для создания личных кабинетов на сайте
Платформа Falcon Space
Это снижение стоимости владения
за счет меньшего количества людей для поддержки
Это быстрое внесение изменений
по ходу эксплуатации программы
Это современный интерфейс
полная адаптация под мобильные устройства