来自c#asp.net mvc的json对象返回undefined



我是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属性,但没有参数来接收您发送的数据。您需要创建一个映射到您发送的对象的模型。

最新更新