IgorBee
@IgorBee
JS,VBS,3D.Web с 07.2015

Как на нативном js получить ответ с сервера в виде массива или объекта?

search.oninput =function searchVal(){

  console.log(search.value);

  var ourServ;

var xhr = new XMLHttpRequest();
xhr.onreadystatechange= function(){
  if(xhr.readyState !=4) return;

   console.log( xhr.status + ': ' + xhr.statusText + 'respone:'+xhr.responseText);


  ourServ=JSON.parse(xhr.responseText);
console.log(ourServ+' our)');
};

xhr.open('GET', './php/sql.php?input='+search.value, true);

xhr.send();

};


ну и пхп что отдаёт.

foreach ($data as $key) {
    $temp = $key['city'];
    if ($key['state'] !== '') {
        if ($key['region'] !== '') {
            $temp .= ', '.$key['state'].', '.$key['region'];
        } else {
            $temp .= ', '.$key['state'];
        }
    }
    $response[] = $temp;
}

echo json_encode($response, JSON_UNESCAPED_UNICODE);


welovepavel.esy.es/t/input/index.html

В последнем инпуте где "город" написано,вводя туда название города мы ищем в БД по первым буквам совпадение и выводим в консоль.

14af1913fbaf4b14afa4eae96c0b40c1.png

естественно хотелось бы массивы получать чтобы удобней было с ними потом работать.

L21XDOvTvpJemX.jpg

трабл в том что JSON отдаёт строку ,а как разделять область и город чтобы с другими городами не смешалось я не знаю(
  • Вопрос задан
  • 929 просмотров
Решения вопроса 1
copist
@copist
Empower people to give
Вот тут не делай конкатенацию console.log(ourServ+' our)');
правильнее выводить два значения через запятую console.log(ourServ, 'our)');
а лучше пользуйся пошаговой отладкой

Вот: всё у тебя нормально вроде бы
76f2305b29fa4e51bbd306698df8592f.png

Ответ сервера надо перестроить, чтобы отображать более сложные данные. Может быть так:

foreach ($data as $key) {
    $response[] = [
        'city' => $key['city'],
        'region' => $key['region'],
        'state' => $key['state'],
    ];
}


или так
foreach ($data as $key) {
    $city = $key['city'];
    $stateRegion =  $key['region'] . (''!==$key['region'] && ''!==$key['state'] ? ' ' : '') . $key['state'];
    $response[] = $city . ''!==$stateRegion ? ' ( ' . $stateRegion . ' )' : '';
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы