c# - 尝试返回 json 并填充选择列表

标签 c# jquery asp.net-mvc

我正在尝试从我的 Controller 返回一个 Json 结果并使用 jQuery 填充一个选择列表。 但是代码甚至没有命中我的 Controller 中的 Json 方法。

我的选择列表

<select id="MyList"></select>

我的javascript

<script type="text/javascript">
    $(document).ready(function () {
        $.getJSON("@Url.Action("GetProductJson", "Product")", null, function (data) {
            $("#MyList").addItems(data);
        });
    });

    $.fn.addItems = function (data) {
        return this.each(function () {
            var list = this;
            $.each(data, function (index, itemData) {
                var option = new Option(itemData.Text, itemData.Value);
                list.add(option);
            });
        });
    };
</script>

我在 ProductController 中的 Json 方法

[HttpGet]
public JsonResult GetProductJson()
{
    var list = new List<SelectListItem>
           {
               new SelectListItem { Value = "1", Text = "Aron" },
               new SelectListItem { Value = "2", Text = "Bob" },
               new SelectListItem { Value = "3", Text = "Charlie" },
               new SelectListItem { Value = "4", Text = "David" }
           };

    return Json(list);
}

最佳答案

您应该为默认情况下禁用的 GET 请求启用 JSON。这是通过将第二个参数传递给 Json 方法来实现的:

return Json(list, JsonRequestBehavior.AllowGet);

现在继续安装 FireBug .如果您在 StackOverflow 上发布此问题之前已经这样做,您可能已经在浏览器中检查了 AJAX 请求,并且可能已经看到服务器返回 500 状态代码,并且当您检查响应时,您会看到确切的错误消息,而不仅仅是那-您还会看到有关如何修复它的建议。该建议基本上是我在此处发布的答案中的内容。因此,您甚至不需要发布您的问题,因为您可以自己解决。我无法想象人们在没有 FireBug 或 Chrome 开发者工具等工具的情况下进行 Web 开发。这就像尝试在没有任何工具的情况下用自己的双手盖房子。

关于c# - 尝试返回 json 并填充选择列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14455675/

相关文章:

jquery - easyautocomplete jquery 在焦点上显示列表

jquery - 如何更改元素内的文本值?

c# - try catch 不处理 BadImageFormatException

c# - 如何通过代码禁用 MVC Controller ?

javascript - 单击按钮隐藏 5 个段落中的第 3 段,而不为这些段落分配任何类或 ID

c# - 如何在C#中继承WPF控件并同时使用泛型类?

javascript - 未捕获的类型错误 : $. ajax 不是函数

c# - 在代码块之后附加方括号

asp.net-mvc - EditorFor() 和附加 View 数据 : how to add data in helper class?

c# - IAP 不适用于 Win10Mobile 的 UWP 应用程序