![](/img/trans.png)
[英]How to send FormData from javascript to ASP.NET Core 2.1 web API using fetch
[英]Javascript: get a BadRequest error from a Web Api .Net 6 using fetch
我在使用 fetch 时遇到了一点麻烦,
这是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));
}
所以问题是从 Web API 控制器收到错误的请求,
例如,如果控制器给出 badRequest,它必须停止获取并且不给出“登录成功”
这是怎么做到的? 如果有更好的解决方案来解决这个错误(例如:使用 AJAX 而不是 fetch)。
欢迎任何帮助
Ps:警告此Javascript代码和Web API控制器代码如果没有badrequests正常工作
使用诸如退货之类的东西的回复; 我还有其他问题是我无法获得“状态”代码
.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');
}
})
在上面的代码中,它给出了 'Not Making Sense' ,如何获得将真实状态传递给变量的状态的真实值?
收到状态码 400 后进入 if 语句,因为它是真的。 在那之后它可以自由离开,因为你不归还它。 现在,无论是真还是假,代码都会在 if 语句之后继续执行。
你应该实现这样的东西:
If (status == 400) {
console.log("400 triggered");
return;
}
您可能想要实现一种方法来告诉您的用户出了点问题,因为他们不会打开他们的控制台。
关于编辑
在下面的代码中,您将返回的值分配给res
.then((res) => {
res 在这种情况下很可能代表响应。 您应该通过在控制台中记录res
来查看它返回的内容:
console.log(res)
这应该返回一个对象,其中包含许多关于response status
的属性。 如果您能找到statuscode
,请四处看看。 此变量将替换status
变量。
它将从此改变:
if (status == 400) {
对于这样的事情:
if (res.statusCode == 400) {
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.