Предположим, что маршрут правильный (/register
не /
). Вы получаете ответ <h1>something here</h1>
, но нигде не пишете (или не видите).
$('#login').on("click", () => {
var email = $('#email').val();
var password = $('#password').val();
$.get("/register", {
field1: email,
field2: password
})
.done(data => {
//write somewhere
$('#someid').html(data);
});
});
Но вам нужно взглянуть и на часть catch
, она просто перенаправляет на другую страницу. Но вы делаете Ajax, поэтому он вернет перенаправленное содержимое страницы.
EDIT:
Почему не работает перенаправление?
Допустим, вы хотите GET
маршрут, например, /route1
, который возвращает html. Другой маршрут - /route2
, который внутренне перенаправляет на /route1
.
Итак, если вы HTTP GET
/route2
как вы думаете, что будет на выходе? это будет содержимое route1
. Поскольку внутренне он перенаправляет на /route1
, то есть, в основном, он аналогичен извлечению содержимого /route1
.
Я сделал POC для понимания:
app.get('/:id', (req,res)=>{
if(req.params.id === '2'){
res.redirect('/3');
}else{
res.send(req.params.id || "products");
}
});
для этого маршрута,
fetch('http://host/1').then((d)=>d.text()).then(console.log) //returns 1
fetch('http://host/3').then((d)=>d.text()).then(console.log) //returns 3
Обход :
В вашем блоке catch вы можете вернуть url, а в обработчике #login
вы можете добавить window.location.href = <theurl>
в случае ошибки.