2013-09-26 37 views
3

我在数组中有以下数据。如何将数据从json读取到使用jQuery查看mvc

[{"FirstName":"Nancy","LastName":"Davolio","Title":"Sales Representative"}, 
{"FirstName":"Andrew","LastName":"Fuller","Title":"Vice President, Sales"}] 

我想使用jquery这个数据呈现到像这样的表:

<table id="employee"> 
<tr> 
<td>Nancy</td> 
<td>Davolio</td> 
<td>Sales Representative</td> 
... 
</table> 
+0

更多的上下文和细节将受到欢迎。你想达到什么目的?视图和后端代码的样本也很棒。 – rivarolle

+0

所以我的目标是,使用ViewData从我的控制器获取数据,并使用jquery只需点击一下按钮即可将检索到的值放在View上,无需刷新页面,这里是我View的后端代码: –

+0

View:@ { var serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); var employees = @ serializer.Serialize(ViewData [“Employees”]); } $(“#employee”)。append(“​​”+“@employees。toString“+” “); - 所以基本上我想追加序列化的数据到我的表,你可以从上面看到 –

回答

6

类似

$(document).ready(function() { 
     var jsonp = '[{"Lang":"jQuery","ID":"1"},{"Lang":"C#","ID":"2"}]'; 
     var lang = ''; 
     var obj = $.parseJSON(jsonp); 
     $.each(obj, function() { 
      lang += this['Lang'] + "<br/>"; 
     }); 
     $('span').html(lang); 
    });​ 
+0

我在我的View页面使用剃须刀声明我的数据,并使用序列化'@model IEnumerable @ { var serializer = new System .Web.Script.Serialization.JavaScriptSerializer(); var employees = @ serializer.Serialize(ViewData [“Employees”]); }' –

+0

这完全有效。 。 。但我的jsonp的数据来自一个ViewData,你能给我这个建议吗?请... –

+1

var jsonp ='@ViewData [“key”]'; –

2

我之前做过这样的事:

var apiUrl = 'UrlOfData'; 
$(document).ready(function() { 
    $.getJSON(apiUrl) 
     .done(function (data) { 
      for (var item in data){ 
       $('#people').append(item.FirstName); 
      } 
     }) 
     .fail(function (jqXHR, textStatus, err) { 
      $('#people').text('Error: ' + err); 
     }); 
}); 
+0

** bold **我在我的View页面使用剃须刀宣布我的数据'@model IEnumerable @ { var serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); var employees = @ serializer.Serialize(ViewData [“Employees”]); }' –

+0

不要使用JavaScriptSerializer ...它有点可怕。尝试JSON.NET http://james.newtonking.com/json – mckeejm

0

我不相信你需要jQuery秒。剃刀中的foreach应该足够了。像这样的东西应该工作(因为通过该模型的IEnumerable):

<table id="employee"> 
@foreach (var employee in Model) 
{ 
<tr> 
    <td>@employee.LastName</td> 
    <td>@employee.FirstName</td> 
    <td>@employee.TItle</td> 
</tr> 
} 
</table> 
+0

所以我的目标是,我的控制器使用ViewData,并将检索到的值放在View上,只需点击一下按钮,使用jquery并且不刷新页面。 –

0

据了解,为简单的OPS这样,手工组装DOM是好的。但是我还是有点惊讶,没有人提到jquery模板。

详情请参阅此链接:Jquery Template下面的内容引有

该插件使用数据属性分析模板以填充 数据。只需传入一个JavaScript对象,该插件就会执行 休息。

一个例子模板下面:

<script type="text/html" id="template"> 
    <div data-content="author"></div> 
    <div data-content="date"></div> 
    <img data-src="authorPicture" data-alt="author"/> 
    <div data-content="post"></div> </script> 

,并使用该做到以下几点:

$("#template-container").loadTemplate($("#template"), 
    { 
     author: 'Joe Bloggs', 
     date: '25th May 2013', 
     authorPicture: 'Authors/JoeBloggs.jpg', 
     post: 'This is the contents of my post' 
    }); 

同样模板的内容可在中国北京举行一个单独的html文件,没有封闭的脚本标记,并且像一样使用以下:

$("#template-container").loadTemplate("Templates/template.html", 
    { 
     author: 'Joe Bloggs', 
     date: '25th May 2013', 
     authorPicture: 'Authors/JoeBloggs.jpg', 
     post: 'This is the contents of my post' 
    }); 

该插件具有许多可用于填充数据的各种属性数据-...属性。还有一个强大的数据模板绑定属性,它接受一个JSON对象, 可以绑定到任何属性或元素的内容。