0
我在我的Web窗體中調用ActionResault中的一個Ajax,問題是即使我將響應狀態代碼設置爲任何值但是200(404,401 ,...),阿賈克斯將獲得200響應,從而並且不會有任何錯誤在阿賈克斯這裏是我的Ajax和控制器:Web窗體響應狀態代碼在控制器中始終爲200 in 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);
}
}
任何幫助將是讚賞
該行爲結果代碼不應該編譯爲'HttpStatusCodeResult'和'JsonResult'不可分配,並且不能隱式地將其轉換爲另一個。 – Nkosi
@Nkosi感謝您的幫助。所以您建議我更改ActionResault的返回類型? – nader
我沒有提出任何建議。我說的是,你現在擁有的東西甚至不應該編譯成你所描述的行爲。您可以將操作的返回類型更改爲以ActionResult作爲開始的最低公共類型,然後查看爲什麼獲取所描述的行爲。 – Nkosi