2013-05-01 35 views
1

我有這個行動方法。它會返回一些JSON。從行動方法返回JSON

public JsonResult Get() 
{ 
     ... 

     return new JsonResult { Data = data }, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; 
} 

然後我在我的視圖中有一個指向Get操作方法的腳本標記。

<script type="text/javascript" src="@Url.Content("~/resource/get")"></script> 

問題是我無法訪問JS代碼中的JSON數據。看起來JSON需要以某種方式執行。任何建議?

+0

你知道你可以去'返回Json(data);'對嗎? :) – 2013-05-01 16:08:29

+0

我知道,但你必須設置JsonRequestBehavior。 – user49126 2013-05-01 16:11:31

+0

那麼爲什麼不用'[HttpGet]'屬性來裝飾方法呢? – 2013-05-01 16:12:28

回答

2

你可以只調用jQuery中的動作,然後直接處理JSON:

$.ajax({ 
    dataType: "json", 
    url: "/resource/get", 
    success: function(data){ 
     var obj = JSON.parse(data); 
    } 
}); 

或者更短的版本:

$.getJSON('/resource/get', function(data) { 
    var obj = data; 
}); 
+0

我知道,但我只是想知道是否有任何其他方式?也許一個mvc html helper? – user49126 2013-05-01 16:04:53

+1

這種方式有什麼問題?有沒有你想要解決的具體需求?你能告訴我爲什麼你想用腳本引用來做,而不是通過Ajax調用它嗎? – Kenneth 2013-05-01 16:06:18

+0

我只想讓JSON對象儘快做好準備。 – user49126 2013-05-01 16:14:02

1

如果你想在JSON可用盡快,沒有額外的要求,其包含在初始頁面加載:

<script type="text/javascript"> 
    var myJson = @Html.Action("Get"); 
</script> 

現在你只需訪問myJson變量在您的腳本訪問您的數據。

1

如果您希望在頁面構建在服務器上時將其轉儲到HTML中,則可以將其添加到視圖模型中,然後直接在頁面上呈現它。這裏有一個僞代碼的例子:

<script type="javascript"> 
    var obj= JSON.parse('@Model.PropertyContainingJson'); 
</script>