js скрипт где происходит обработка ввода в input и вывод результата
window.addEventListener('load', function (e) {
document.querySelectorAll('[name="street"]').forEach(function (el, indx) {
el.addEventListener('input', async (e) => {
let street_name=el.value
if(street_name.length>3){
let data = {
adress: street_name,
task:'getKladr'
}
let url = '/controllers/ajax.php'
let response = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
body: 'data='+JSON.stringify(data)
})
let result = await response.json();
let eladd_res=document.getElementById("address")
eladd_res.innerHTML=""
let json=JSON.parse(result)
console.log(json)
let html=""
Object.entries(json.result).forEach(([key, value]) => {
html+="<p>"+value["name"]+"</p>"
})
eladd_res.innerHTML=html
console.log(json['result'])
}
})
})
})
Скрипт /controllers/ajax.php - куда отправляется AJAX запрос
require_once $_SERVER['DOCUMENT_ROOT']."/models/kladr.php";
$res=GetInput();
echo json_encode($res);
function GetInput()
{
$data=getData();
return call_user_func($data['task'],$data);
}
function getData() : array{
$method=$_SERVER['REQUEST_METHOD'];
$_vars=[];
switch ($method){
case 'GET':
$_vars=requestGet();
break;
case 'POST':
$_vars=requestPost();
break;
}
return $_vars;
}
function requestGet() : array{
return $_GET;
}
function requestPost() : array{
return json_decode($_POST['data'],true);
}
function getKladr($data){
$kladr= new Kladr();
$res=$kladr->getStreet($data['adress']);
return $res;
}
Сам класс Kladr /models/kladr.php откуда происходит вызов API и обработка ответа
class Kladr
{
private $api_key;
public function __construct()
{
//$this->api_key = KLADRAPIKEY; //не понадобился
}
public function getStreet($street){
$res=$this->request($street, "street", "2300000600000");
return $res;
}
private function request($adress, $type, $cityid)
{
$res=[];
$base_url = "https://kladr-api.ru/api.php?";
$query_data = [
// 'token' => $this->api_key,
'query' => $adress,
'contentType' => !empty($type) ? $type : "street",
'cityId' => !empty($cityid) ? $cityid : "2900000100000",
];
$data_get = http_build_query($query_data);
$url = $base_url.$data_get;
//query=Ломоносова &contentType=street &cityId=2900000100000
// $url="https://kladr-api.ru/api.php?query=Анапск&contentType=street&cityid=2900000100000&limit=5";
$ch = curl_init();
$defaults = [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_URL => $url,
CURLOPT_HTTPGET => true,
CURLOPT_TIMEOUT => 10,
];
$curl = curl_init();
curl_setopt_array($curl, $defaults);
$response = json_decode(curl_exec($curl), true);
$curlErrorNumber = curl_errno($curl);
if ($curlErrorNumber) {
$res['error']['msg'] = 'Error curl';
$res['error']['uri'] = $url;
$res['error']['curl_n'] = $curlErrorNumber;
curl_close($curl);
} else {
$res = curl_exec($curl);
curl_close($curl);
}
return $res;
}
}
Если ответ подошел. Поставьте пожалуйста отметку - ответ