下面是我用来确定向用户显示哪些菜单选项的 Ajax 调用(我知道这是一个有缺陷的方法,只是为了应对演示的时间紧迫)。当页面加载时,我可以单步执行 Visual Studio 中的控制器方法,因此我知道它正在访问控制器并发送回正确的信息。
查看 Chrome 的网络控制台,我还可以看到浏览器收到了正确的响应。然而,theconsole.log
或 thealert
都没有开火。success
orerror
方法中也不执行任何操作。有谁看到出了什么问题?
看法
$(document).ready(function ($) {
//Determine which links to show in navbar
window.onload = function () {
$.ajax({
type: 'GET',
url: '@Url.Action("CheckSecurity","Home")',
dataType: 'json',
succcess: function (data) {
console.log(data);
alert(data);
if (data == "admin") { $('#adminLink').show(); }
else if (data == "IT") { $('#ITLink').show(); }
else if (data == "viewer") { $('#viewerLink').show(); }
else if (data == "modifier") { $('#modifierLink').show(); }
},
error: function (data) {
alert("error");
}
});
};
控制器
[HttpGet]
public JsonResult CheckSecurity()
{
if (Security.IsAdmin(User)) return Json("admin", JsonRequestBehavior.AllowGet);
if (Security.IsItSupport(User)) return Json("IT", JsonRequestBehavior.AllowGet);
if (Security.IsViewer(User)) return Json("viewer", JsonRequestBehavior.AllowGet);
if (Security.IsModifier(User)) return Json("modifier", JsonRequestBehavior.AllowGet);
return Json("NA", JsonRequestBehavior.AllowGet);
}
这是 Chrome 中网络和常规控制台的几个屏幕截图。麻烦是在我单步执行控制器方法并且程序已将值返回给浏览器之后。
网络控制台
标准控制台