Tengo un pequeño problema para usar fetch,
Este es el código javascript:
function loginJS() { const login = document.getElementById('login'); const nome = document.getElementById('lnome'); const pass = document.getElementById('lpass'); const item = { Username: nome.value.trim(), Password: pass.value.trim() }; fetch(uri, { credentials: 'include', method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: JSON.stringify(item) }) .then(response => response.json()) .then((res) => { //trying get the error (this if not work) , 400 is the code for bad request if (status = 400) { console.error(''); //HERE I HAVE THE PROBLEM } nome.value = ''; pass.value = ''; console.info('Login Success'); window.location.href = url_1; }) .catch(error => console.error('Unable to Login: ', error)); }Entonces, el problema es obtener la solicitud incorrecta de un controlador API web,
Si el controlador da una solicitud mala, tiene que detener la búsqueda y no dar el 'Inicio de sesión exitoso', por ejemplo
¿Cómo se hace esto? y si hay mejores soluciones para obtener este error (por ejemplo, use AJAX en lugar de buscar).
Cualquier ayuda es bienvenida
PD: para advertir que este código Javascript y el código del controlador Web API funcionan normalmente si no hubo solicitudes incorrectas
Con la respuesta de usar algo como un retorno; tengo otro problema que es que no puedo obtener el código de 'estado'
.then((res) => { if (status == 400) { window.alert('ERRROOORR'); return; } else if (status == 200) { nome.value = ''; email.value = ''; pass.value = ''; window.alert('Register Sucess'); document.getElementById('LoginCheck').click(); } else { window.alert('Not making sense'); } })En el código de arriba da el 'No tiene sentido', ¿cómo obtengo el valor verdadero del estado pasando el estado verdadero a una variable?
Después de recibir el código de estado 400, ingresa la declaración if ya que es verdadero. Después de eso, es libre de irse ya que no lo devuelve. Ahora el código seguirá adelante después de la declaración if, ya sea verdadera o falsa.
Deberías implementar algo como esto:
If (status == 400) { console.log("400 triggered"); return; }Es posible que desee implementar una forma de decirles a sus usuarios que algo salió mal, ya que no tendrán sus consolas abiertas.
CON RESPECTO A LA EDICIÓN
En el siguiente código, asigna el valor devuelto a res
.then((res) => { res probablemente significa respuesta en este caso. Debería ver qué devuelve res al iniciar sesión en la consola:
console.log(res) Esto debería devolver un objeto que contiene muchas propiedades con respecto al response status . Mire a su alrededor si puede encontrar el statuscode de estado. Esta variable reemplazará a la variable de status .
Cambiará de esto:
if (status == 400) {A algo como esto:
if (res.statusCode == 400) {