我的Web表单中有一个Ajax,它在Controller中调用ActionResault。问题是即使我将响应状态代码设置为任何东西但是200(404,401,...)Ajax将获得200响应所以在Ajax中不会有任何错误这里是我的Ajax和控制器:
$.ajax({
beforeSend: function (jqXHR, settings) {
xhr = jqXHR; // To get the ajax XmlHttpRequest
},
url: url + "Accounts/Login",
type: 'POST',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(loginDataModel),
success: function (result) {
alert(result);
if (result==0) {
document.location.href = '/Controlpanel/DashBoard.aspx';
}
}, error: function (jqXHR, exception) {
var msg = '';
if (jqXHR.status === 0) {
msg = 'عدم اتصال به اینترنت';
} else if (jqXHR.status == 401) {
msg = 'اطلاعات وارد شده صحیح نمی باشد';
} else if (jqXHR.status == 500) {
msg = 'خطایی در هنگام پردازش درخواست شما رخ داد.';
} else if (exception === 'parsererror') {
msg = 'Requested JSON parse failed.';
} else if (exception === 'timeout') {
msg = 'درخواست شما در بازه زمانی مورد نظر پردازش نشد';
} else if (exception === 'abort') {
msg = 'Ajax request aborted.';
} else {
msg = $.parseJSON(jqXHR.responseText).ErrorMessage;
}
$(".message").text(msg);
},
})
这是我的ActionResault
public HttpStatusCodeResult Login(LoginBindingProcessModel loginDataModel)
{
if (userRole != null)
{
HttpContext.GetOwinContext().Authentication.SignIn(new Microsoft.Owin.Security.AuthenticationProperties { IsPersistent = loginDataModel.isPersistent }, userRole);
}
if (objUserVerification == UserVerificationResult.SuccessfullyVerified)
{
Response.StatusCode = (int)System.Net.HttpStatusCode.OK;
return Json(objUserVerification);
}
else
{
Response.StatusCode = (int)System.Net.HttpStatusCode.Unauthorized;
return Json(objUserVerification);
}
}
任何帮助将不胜感激
答案 0 :(得分:0)
原来问题是401。因为owin将页面重定向到未授权状态代码的默认地址。