当我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);
}
答案 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/)来解决您的问题。