Как отправить POST запрос в JavaScript как отправка формы

Мне нужно перенаправить браузер на другую страницу. Для GET запроса я бы использовал:

window.location.href = 'https://mysite.com/search?term=test';

Но ресурс, к которому я обращаюсь, работает только с POST запросами. Если бы это не генерировалось динамически, я бы создал HTML форму:

<form action="https://mysite.com/search" method="POST">
    <input type="hidden" name="term" value="test">
</form>

Потом просто отправил бы форму через DOM. Но мне нужен JavaScript код, который позволит написать что-то вроде:

sendPostRequest('https://mysite.com/search', {'term':'test'});

Какая лучшая кроссбраузерная реализация? Мне нужно решение, которое изменяет местоположение браузера точно как отправка формы. XMLHttpRequest тут не подходит, это должно быть не асинхронно и Ajax не решение.

Создай форму динамически и сразу отправь. Вот как:

function sendPostRequest(url, data) {
    const form = document.createElement('form');
    form.method = 'POST';
    form.action = url;
    
    for (let key in data) {
        const input = document.createElement('input');
        input.type = 'hidden';
        input.name = key;
        input.value = data[key];
        form.appendChild(input);
    }
    
    document.body.appendChild(form);
    form.submit();
}

Работает как обычная отправка формы с редиректом.

У меня была такая же задача пару месяцев назад! Проще всего создать невидимую форму и сразу отправить. Главное - добавь style.display = 'none', чтобы форма не мелькала. Можешь еще document.body.removeChild(form) после отправки добавить, но не обязательно - страница всё равно перезагрузится. На старых IE проверял - везде работает.

Создай форму через JavaScript и отправь её. Добавь нужные поля, прикрепи к документу и вызови submit(). После отправки удали форму. Работает во всех браузерах и перенаправляет как обычная форма.