2014-04-23 168 views
1

當我I console log my response我回來的是HTML。我如何獲得player object如何從ASP.NET MVC 4中的控制器返回JSON對象?

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

您正在調用ActionResult方法,該方法將返回比您之後的JSON更多的方法。

更改您的代碼

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

     return Json(player); 
    } 

您可能還需要確認該URL被拾起你的JavaScript文件是正確的。無論是參數傳遞不正確還是Razor無法正確識別@轉義字符。

+0

感謝您的回覆。我仍然得到相同的結果。我也很好奇爲什麼我不能在調試模式下運行以查看Id是否實際傳遞給了控制器。當我設置斷點時,什麼都不會發生。 – user3562751

+0

你使用[http://getglimpse.com](掠影)?在瀏覽器的調試控制檯中,你看到了什麼Controller/Action方法被調用?你在HTML中看到什麼內容被返回?這是一個普通的網頁還是那裏有奇怪的/錯誤的內容? –

+0

我使用鉻。我不知道在哪裏尋找被調用的Controller/Action方法。被返回的HTML是發生按鈕點擊的頁面。 – user3562751

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}); 
} 
+0

感謝您的回覆。我試過這個,並且仍然得到相同的結果。 – user3562751

0

您可以在Web環境中使用System.Runtime.Serialization.Json,或者在winform環境中使用Newtonsoft.Json(http://json.codeplex.com/)來解決您的問題。

相關問題