1

以下は、ユーザーに表示するメニュー オプションを決定するために私が使用している Ajax 呼び出しです (これは欠陥のある方法であることはわかっていますが、デモの時間的制約に直面しているだけです)。ページが読み込まれると、Visual Studio でコントローラー メソッドをステップ実行できるので、コントローラーにアクセスして正しい情報を送り返していることがわかります。

Chrome のネットワーク コンソールを見ると、ブラウザが正しい応答を受信したこともわかります。ただし、 も も起動していませconsole.logalertsuccessまたは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 のネットワークと通常のコンソールのスクリーン ショットです。コントローラーのメソッドをステップ実行し、プログラムがブラウザーに値を返した後、面倒です。

ネットワークコンソール

ここに画像の説明を入力

標準コンソール

ここに画像の説明を入力

4

2 に答える 2

4

あなたの中に余分なものがありcます

成功:

したがって、応答は 200 request ですが、no mapping for success定義したため、ログに記録されることはありません

于 2013-05-14T20:32:56.013 に答える