如何从ASP.NET MVC 4中的控制器返回JSON对象?

时间:2014-04-23 02:59:20

标签: c# asp.net asp.net-mvc json

当我console log我的response时,我回来的只有HTML。我如何获得player object

Site.JS:

$(".AddToPreRank").click(function (e) {
    e.preventDefault();
    //grab id
    var id = $(this).get(0).id;
    //append player to prerank list
    $.ajax({
        url: '@Url.Action("AddToPreRank")',
        type: 'POST',
        data: { id : id },
        success: function (response) {
            console.log(response);
            alert("hello");
        }

    });
});

LeagueController.cs:

[HttpPost]
public ActionResult AddToPreRank(int id){
    Player player= new Player();
    player = db.Players.Find(id);
    return Json(player);
}

3 个答案:

答案 0 :(得分:3)

你正在调用一个ActionResult方法,该方法将返回比你所追求的JSON更多的东西。

将您的代码更改为

public JsonResult AddToPreRank(int id){
        Player player= new Player();
        player = db.Players.Find(id);

        return Json(player);
    } 

您可能还需要确认JavaScript文件中提取的网址是否正确。参数未正确传递或Razor无法正确识别@转义字符。

答案 1 :(得分:0)

尝试使用$ .post将返回值默认为JSON。

$.post('@Url.Action("AddToPreRank")', data: { id : id },
    function (response) {
        console.log(response);
        alert("hello");
    }
});

此外,返回JsonResult而不是ActionResult并将播放器作为匿名类型返回。

[HttpPost]
public ActionResult AddToPreRank(int id){
    Player player= new Player();
    player = db.Players.Find(id);

    return Json(new {player});
}

答案 2 :(得分:0)

您可以在Web环境中使用System.Runtime.Serialization.Json,或在winform环境中使用Newtonsoft.Json(http://json.codeplex.com/)来解决您的问题。