以下は、ユーザーに表示するメニュー オプションを決定するために私が使用している Ajax 呼び出しです (これは欠陥のある方法であることはわかっていますが、デモの時間的制約に直面しているだけです)。ページが読み込まれると、Visual Studio でコントローラー メソッドをステップ実行できるので、コントローラーにアクセスして正しい情報を送り返していることがわかります。
Chrome のネットワーク コンソールを見ると、ブラウザが正しい応答を受信したこともわかります。ただし、 も も起動していませconsole.log
んalert
。success
またはerror
メソッド内の何も実行されません。誰かが何がうまくいかないのか見ていますか?
意見
$(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 のネットワークと通常のコンソールのスクリーン ショットです。コントローラーのメソッドをステップ実行し、プログラムがブラウザーに値を返した後、面倒です。
ネットワークコンソール
標準コンソール