我是JQuery/JSON的新手,我正试图将一个从我的MVC操作方法返回的JSON对象放到客户端,并将其显示在屏幕上。
我一直在使用本教程作为参考:http://www.asp.net/ajaxlibrary/jquery_json_data_from_controller.ashx
这是我的行动方法:
[HttpPost]
public ActionResult GetStock()
{
IStockService service = new DummyStockService();
return Json(service.GetStock());
}
(GetStock()返回一个类型为Stock的List,其中Stock是一个普通的老C#对象,具有两个属性,一个字符串Description和一个十进制Price。)
我的客户端javascript:
<script type="text/javascript">
$(document).ready(function () {
$("button").click(function () {
alert('Line before controller action post');
//When I get it working I will remove the hardcorded URL
$.post("http://localhost:3786/Home/Index/GetStock", null, function (data) {
$.each(data, function (i, item) {
var displayString = item.Description + ' : ' + item.Price;
$("<li/>").html(displayString).appendTo("#list");
});
});
});
});
</script>
目前,#list元素中显示的是一个很长的"未定义:未定义"列表,作为对描述:价格配对的一种姿态。任何想法都将不胜感激。
编辑:
我现在已经解决了这个问题(尽管我在接下来的7个小时内无法发布答案),问题是使用硬编码的URL http://localhost:3786/Home/Index/GetStock
没有正确调用操作方法,只是从/Index/输出html,我将其更改为@Url.Action("GetStock")
,然后离开了。
感谢@Felix在调试时提供的提示。
您的GetStockMethod()
有一个HttpPost
属性,但没有参数来接收您发送的数据。您需要创建一个映射到您发送的对象的模型。