C# 为什么ASP.NET WEB API没有返回200 Ok作为我在ajax中的响应
我有一个asp.net web api来检查用户是否登录。当我调试时,我从api控制器得到200 OK响应,但当我在fiddler中检查时,我得到两个200 OK响应。一个是空的,没有假定其返回的对象,另一个响应包含带有该对象的响应 控制器代码C# 为什么ASP.NET WEB API没有返回200 Ok作为我在ajax中的响应,c#,asp.net,ajax,asp.net-web-api,C#,Asp.net,Ajax,Asp.net Web Api,我有一个asp.net web api来检查用户是否登录。当我调试时,我从api控制器得到200 OK响应,但当我在fiddler中检查时,我得到两个200 OK响应。一个是空的,没有假定其返回的对象,另一个响应包含带有该对象的响应 控制器代码 [HttpPost] [Route("api/BTS_Admin/Login")] public HttpResponseMessage AdminLogin(Admin admin) { Admin respo
[HttpPost]
[Route("api/BTS_Admin/Login")]
public HttpResponseMessage AdminLogin(Admin admin)
{
Admin response = admin.LoginCheck();
if (response != null)
{
return Request.CreateResponse(HttpStatusCode.OK, response);
}
else
{
return Request.CreateErrorResponse(HttpStatusCode.NotFound, "Login Failed");
}
}
另外,当我想从ajax获得成功响应时,我会在ajax调用的错误部分得到返回的响应
Ajax调用代码
$('#btnLogin').click(function () {
$.ajax({
url: 'http://localhost:61468/api/BTS_Admin/Login',
method: 'POST',
dataType: JSON,
contentType: 'application/json',
data: JSON.stringify({
Email: $('#txtUsername').val(),
Password: $('#txtPassword').val(),
}),
success: function (response) {
//localStorage.setItem('accessToken', response.access_token);
//localStorage.setItem('userName', response.userName);
window.location.href = "Data.html";
},
error: function (jqXHR) {
$('#divErrorText').text(jqXHR.responseText);
$('#divError').show('fade');
}
});
注意:这是我得到回复的地方
error: function (jqXHR) {
$('#divErrorText').text(jqXHR.responseText);
$('#divError').show('fade');
试试这个:
[HttpPost]
[Route("api/BTS_Admin/Login")]
public IHttpActionResult AdminLogin(Admin admin)
{
Admin response = admin.LoginCheck();
return Ok(response);
}
在ajax请求检查中返回值:
$('#btnLogin').click(function () {
$.ajax({
url: 'http://localhost:61468/api/BTS_Admin/Login',
method: 'POST',
dataType: JSON,
contentType: 'application/json',
data: JSON.stringify({
Email: $('#txtUsername').val(),
Password: $('#txtPassword').val(),
}),
success: function (response) {
if(response){
//Do somethig
window.location.href = "Data.html";
}else{
$('#divErrorText').text(jqXHR.responseText);
$('#divError').show('fade');
}
},
error: function (jqXHR) {
alert('Error');
}
});
当您在控制器中设置响应状态代码not 200OK时,ajax会认为这是一个错误,因此会触发错误回调。您会得到什么响应?您是否尝试调试代码并检查服务器代码是否正常工作?当我在fiddler上检查时,服务器代码返回200 Ok状态。但我得到了小提琴手的两个回应。一个有200个Ok响应,我的对象,另一个有200个Ok响应,没有对象。
btnLogin
是一个普通按钮还是提交按钮?可能您使用提交按钮,单击它后,您的Ajax代码将数据发送到服务器,同时刷新页面。这可能是导致此问题的原因之一。然后尝试只使用表单发送数据,而不使用Ajax。您是否在控制台中看到类似于XMLHttpRequest无法加载的错误http://localhost:61468/api/BTS_Admin/Login. 请求的资源上不存在“Access Control Allow Origin”标题。
?我尝试了您的解决方案,但仍然收到相同的错误。感谢各位,我刚刚让它正常工作。我将数据类型从JSON更改为“JSON”。数据类型:JSON,text。。它是来自服务器的数据的平均返回类型。
$('#btnLogin').click(function () {
$.ajax({
url: 'http://localhost:61468/api/BTS_Admin/Login',
method: 'POST',
dataType: JSON,
contentType: 'application/json',
data: JSON.stringify({
Email: $('#txtUsername').val(),
Password: $('#txtPassword').val(),
}),
success: function (response) {
if(response){
//Do somethig
window.location.href = "Data.html";
}else{
$('#divErrorText').text(jqXHR.responseText);
$('#divError').show('fade');
}
},
error: function (jqXHR) {
alert('Error');
}
});