Как правильно делать редирект JavaScript?
Всем привет! Есть форма, данные которые отправляются на сервер webapi и при успешном выполнении запроса идет редирект на другую страницу клиентского сервера. Код:
$('#form').submit(() => {
let formData = new FormData($('#form')[0]);
$.ajax({
type: 'POST',
enctype: 'multipart/form-data',
url: 'http://localhost:57803/api/save',
data: formData,
contentType: false,
processData: false,
cache: false,
success: () => {
window.location.href = '/home/index';
},
error: (e) => {
$("#btnSubmit").prop("disabled", false);
$('#error').text('Произошла ошибка во время создания записи, попробуйте позже.');
console.log('Error: '+ e.responseText);
}
});
return false;
});
Так же есть запрос на клиентский сервер для получения данных:
function loadItems() {
$.ajax({
type: 'GET',
url: 'home/getitems/' + page,
statusCode: {
200: (data) => {
$('#tbody').append(data);
page++;
},
404: () => { $('#result').attr('class', 'text-info').text('Больше нет данных.') },
500: () => { $('#result').attr('class', 'text-danger').text('Произошла ошибка, попробуйте позже!') }
}
});
};
Все работает хорошо, но если после успешной отправке формы происходит редирект, то при отправке запроса на получение данных формируется неправильная ссылка вида https://localhost:44377/home/home/getitems/1, т.е. лишний фрагмент "/home/". Если убрать редирект, то все норм. Не могу понять в чем причина такого поведения
Ответы (2 шт):
Можно использовать что то вроде
window.location.href = window.location.host + '/home/index';
Решил проблему тем, что везде, где идет запрос на клиентский сервер указал url window.location.origin + '[controller]/[action]'