-1

何らかの理由でドロップダウンリストにjsonとjavascriptを入力しようとしていますが、入力しようとするとコンソールエラーが発生します

私は使っているScripts/jquery-2.0.2.js

これはエラーです:

リソースの読み込みに失敗しました: サーバーは 404 (見つかりません) のステータスで応答しました

POST //localhost:9819/Home/Home/Test 404 (見つかりません) jquery-2.0.2.js:7858 send jquery-2.0.2.js:7858 jQuery.extend.ajax jquery-2.0.2.js:7314 RetrieveData Index:45 (無名関数) Index:64 jQuery.event.dispatch jquery-2.0.2.js:4692 elemData.handle

これはビューコードです:

   <script>
    $(document).ready(function () {
        var Load = false;
        function RetrieveData() {
            if (Load == false) {
                Load = true;
                $.ajax({
                    url: <%= Url.Action("Test", "Home") %>
                    data: "{}",
                    dataType: "json",
                    type: "POST",
                    contentType: "application/json",
                    success: function (data) {
                        $("#selectMe").html(data);
                        Load = false;
                    },
                    error: function (data, status, jqXHR) {
                        alert("Error: " + data);
                        Load = false;
                    }
                });
            }
        }

        $(document).on("click", "#test", function () {
            RetrieveData();
        });
    });
</script>

<input type="submit" id="test" />
    <select id="selectMe"></select>

コントローラ:

public string GenerateHTMLforDropDownList(Dictionary<string, string> myData)
    {
        string HTMLString = "";

        foreach (KeyValuePair<string, string> k in myData)
        {
            HTMLString += "<option value=\"" + k.Key + "\">" + k.Value + "</option>";
        }

        return HTMLString;
    }

    [HttpPost]
    public JsonResult Test()
    {
        Dictionary<string, string> myData = new Dictionary<string, string>();

        myData.Add("0", "Mike");
        myData.Add("1", "Mark");
        myData.Add("2", "Karl");
        myData.Add("3", "Rhona");

        return Json(GenerateHTMLforDropDownList(myData), JsonRequestBehavior.AllowGet);
    }

これを修正する方法の助けに感謝します

4

3 に答える 3

1

エラーが示すように、リソースが見つかりません。エラーの URL を見てください。

http://localhost:9819/Home/Home/Test

これ以上カスタムをしていないと仮定するとTest、コントローラーにアクションがあるHome場合、URL次のようになります。

http://localhost:9819/Home/Test

コードで URL を指定する方法にも注意してください。

url: "Home/Test"

あなたが現在いる場合、その相対 URL は、現在のリソースの「サブディレクトリ」(大まかに単語を使用) でhttp://localhost:9819/Home/Anything呼び出されるリソースを探すように指示します。Testだからあなたの問題があります。

そのように URL を手動で指定する代わりにUrl.Action、MVC のメソッドを使用します。このようなもの:

url: '@Url.Action("Test", "Home")'

これにより、現在のコンテキストがどこにあるかに関係なく、サーバー側のコードから完全修飾 URL が生成されるため、現在の URL などに基づいて調整する必要はありません。

于 2013-06-17T14:40:17.903 に答える
0

私は MVC でこれを行ったことはありませんが、Web フォームでこれを数え切れないほど行ったことがあります。URL が問題のようです...

//localhost:9819/ホーム/ホーム/テスト

あなたのajax呼び出しでは、おそらくこの行を調整する必要があります...

url: "Home/Test"

そしてそれを次のようにします...

url: <%= Page.ResolveUrl("~/Home/Test.asmx") %>

これが MVC の基本から外れている場合は申し訳ありません。

于 2013-06-17T14:38:10.813 に答える