2014-05-08 67 views
0

我有一個控制器返回JSON獲得JSON的從局部視圖(ASP.NET MVC)含量

public ActionResult Project() 
    { 
     var q = from p in db.projects 
       select new { p.name_project, p.contract_value }; 

     return Json(q.ToList(), JsonRequestBehavior.AllowGet); 
    } 

我創建了一個局部視圖名稱「Project.cshtml」獲得JSON和打印結果

<script> 
    $.getJSON('/Chart/Project', function (data) { 
     var items = []; 
     $.each(data, function (key, val) { 
      items.push('<li>' + key + ': ' + val.Title + ' (' + val.Count + ')</li>'); 
     }); 

     $('<ul />', { 
      html: items.join('') 
     }).appendTo('body'); 
    }) 
</script> 

我在Index.cshtml中通過HTMLHepler Html.Partial(「Project」)調用部分視圖,但它返回了JavaScript代碼,我想在代碼完成後獲取內容!

+0

寫$ .getJSON函數中的$(document)。就緒(函數(){$ .getJSON ...}); –

+0

如果您總是返回JSON,那麼您可能需要在操作簽名中將ActionResult替換爲JsonResult。 – Mats

回答

0

您需要解析JSON內容在你的getJSON方法如下:

var result = jQuery.parseJSON(data); 

然後在$.each函數中使用這個結果。

Return Json content

0

你$ .getJson()調用時,局部視圖渲染是沒有得到執行。你需要將其包裝在$。就緒()函數(如下),或在JavaScript自執行的函數

<script> 
    $(function(){ 
    $.getJSON('/Chart/Project', function (data) { 
     var items = []; 
     $.each(data, function (key, val) { 
      items.push('<li>' + key + ': ' + val.Title + ' (' + val.Count + ')</li>'); 
     }); 

     $('<ul />', { 
      html: items.join('') 
     }).appendTo('body'); 
    }) 
    }); 
</script> 
相關問題