Почему после ответа сервера браузер не отображает html-страницу? (get-запрос)

Есть ссылка, по которой я посылаю гет-запрос на сервер:

<li><a class="rub_link" id="programming" href="#">Программирование</a></li>
...
<script>
    document.querySelector('#programming').addEventListener('click', onRenderProgrammingPosts)

    function onRenderProgrammingPosts(e) {
        e.preventDefault();
        
        let request = new XMLHttpRequest();
        let body = "rubric=Программирование";
        request.open("GET", "main?" + body, true);
        
        request.onload = function() {
            if (request.status != 200) {
                console.log(`Ошибка ${request.status}: ${request.statusText}`);
            } else {
                console.log(`Готово, получили ответ: ${request.response}`);
            }
        };

        request.send();
    }
</script>

Сервер (node js) мне всё правильно отвечает html-страницей (проверил с помощью postman и с помощью консоли браузера), но в браузере та нужная html-страница не отображается. Почему так? И почему я не вижу адрес localhost:5000/main?rubric=Программирование в url?

Мне кажется или дело в href="#"?


Ответы (1 шт):

Автор решения: Pavel Grishaev

В вашем примере имеется фоновый запрос и консоль-логи ответа. Такой запрос служит для фонового обмена данными, а не для отображения страницы.

Сделайте location.href = 'https://example.com' вместо этих фоновых запросов, и тогда страница сменится на указанную. В вашем случае можно сделать так:

<li><a class="rub_link" id="programming" href="#">Программирование</a></li>
...
<script>
    document.querySelector('#programming').addEventListener('click', onRenderProgrammingPosts)

    function onRenderProgrammingPosts(e) {
        e.preventDefault();
        
        let body = 'rubric=Программирование';
        
        location.href = `main?${body}`;
    }
</script>

Если же вам сначала нужно убеждаться в верности ответа, и только потом показывать страницу, то location.href можно делать там, где у вас консоль-логи.

→ Ссылка