@osimone

Почему не работает AJAX?

Есть скрипт, в браузере почему-то не работает, даже в консоле ошибку не выводит, путь к файлу json указал вроде правильно
const inputRub = document.querySelector('#rub'),
      inputUsd = document.querySelector('#usd');

inputRub.addEventListener('input', () => {
    const request = new XMLHttpRequest();

    request.open('GET', 'current.json');
    request.setRequestHeader('Content-type', 'application/json; charset=utf-8');
    request.send();

    request.addEventListener('load', () => {
        if(request.status === 200){
            const data = JSON.parse(request.response);
            console.log(request.response);
            inputUsd.value = (+inputRub.value / data.current.usd).toFixed(2);
        }else {
            inputUsd.value = 'error';
        }
    });
});


<div class="converter">
            <div class="monay">
                <h2 class="descr">RUB</h2>
                <input type="number" id="rub">
            </div>
            <div class="monay">
                <h2 class="descr">USD</h2>
                <input type="number" id="usd">
            </div>
        </div>


5f8c7cc1ab2c0044744108.png
  • Вопрос задан
  • 147 просмотров
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Поставьте send() после addEventListener().
С большой вероятностью ответ приходит до того, как успевает назначиться обработчик события.
Ответ написан
@dmitry-toster
Все прекрасно работает

5f8c8a2e5401d283289324.png

Ваш json должен быть доступен по протоколу http.
Скорей всего вы открываете напрямую в браузере без локального сервера. Если это так, то в этом случае будет ошибка с корсами и вы лжете, что ее не видите, либо отказываетесь принимать это за ошибку
Access to XMLHttpRequest at 'file:///C:/Users/admin/Desktop/test/current.json' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, chrome-untrusted, https.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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