Передайте затем event
клика для вашей функции: onclick="req(event, 'name=vm....
Тогда ваша функция может event.preventDefault()
, так что действие щелчка по умолчанию не выполняется .
Теперь подождите, пока ваш сетевой запрос вернется (возможно, вы захотите использовать fetch()
, это намного проще, чем старый XMLHttpRequest
).
После обещания решите, инициируйте перенаправление на целевой URL:
<body>
<a href="?mode=full" onclick="req(event, 'name=vmode&value=full','POST','/cookie')">Promeni rezim prikaza</a>
</body>
<script>
function req(event, data='',method='GET',url='/index.html?test') {
console.debug(event);
event.preventDefault();
fetch(url, {method: "POST"}).then(() => {
location.href = event.target.href;
});
}
</script>
Но учтите, что вашим пользователям, возможно, придется подождать запрос в фоновом режиме и не понять, что происходит.
Если вы хотите отправить только некоторые статистические данные, вы можете рассмотреть возможность использования нового sendBeacon()
API. Он отправляет данные (только POST
) asyn c в фоновом режиме, так что цель ссылки может быть загружена для пользователя, в то время как браузер работает с sendBeacon()
запросами в фоновом режиме.