我正在尝试从我的 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/