我有以下控制器方法:
[HttpPost]
[Authorize(Roles="some_role_actual_user_is_NOT_in")
public ActionResult AJAXMethod()
{
return Json(new { message = "server message");
}
和带脚本的页面:
function sendReq()
{
$.ajax({
type: "POST",
data: { somedata: "somedata" },
url: "/Path/To/AJAXMethod",
success: onAJAXSuccess,
error: onAJAXError
});
}
function onAJAXSuccess(response, status, xhr)
{
alert("success: " + response.message);
alert(status);
}
function onAJAXError(xhr,status,error)
{
alert("error: " + status);
alert(error);
}
当我使用不在授权角色的用户调用sendReq
时,AJAX调用仍然处于调用状态 - 调用了回调onAJAXSuccess
,但response.message
未定义。
答案 0 :(得分:1)
这是正确的行为。 AJAX调用的success
仅由服务器以200 OK响应的事实确定。您需要自己询问返回的响应,以确保它符合您期望的格式。
例如:
if (typeof response.message != "undefined" && response.message != "") {
// it worked
}
else {
// didn't work || user did not have access.
}