-1

我正在尝试一些东西并使用 json 和 javascript 填充下拉列表,出于某种原因我在尝试填充时遇到控制台错误

我在用Scripts/jquery-2.0.2.js

这是错误:

加载资源失败:服务器响应状态为 404(未找到)

POST //localhost:9819/Home/Home/Test 404(未找到) jquery-2.0.2.js:7858 发送 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"

如果您当前在,http://localhost:9819/Home/Anything则该相对 URL 表示要查找Test在当前资源的“子目录”(松散地使用该词)中调用的资源。所以有你的问题。

与其手动指定 URL,不如使用Url.ActionMVC 中的方法。像这样的东西:

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

无论您当前的上下文在哪里,这都会从服务器端代码生成一个完全限定的 URL,因此您不必根据当前的 URL 或类似的东西来调整它。

于 2013-06-17T14:40:17.903 回答
0

我没有在 MVC 中这样做,但我已经在 Web 窗体中这样做了无数次,看起来你的 URL 可能是问题......

//localhost:9819/Home/Home/Test

在您的 ajax 调用中,您可能应该调整此行...

url: "Home/Test"

让它看起来像......

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

对不起,如果这对 MVC 来说太离谱了。

于 2013-06-17T14:38:10.813 回答
-1

您需要将按钮类型更改为“按钮”不提交,因为这是 ajax 调用

于 2013-10-11T09:04:22.767 回答