2010-01-14 58 views
2

我想解析从我的ASP.NET MVC 1.0 Web应用程序中的JSON页面的数据。我需要将这些数据显示在页面加载的表格中,而且我遇到了很多麻烦,主要是因为我以前从未使用过JSON。 JQuery网站也给出了相当可怕的例子。这是我到目前为止,我需要帮助写一个函数:Json:解析以显示在HTML中使用JQuery

$("document").ready(function() { 
     $.getJSON("http://localhost:1909/encoders", 
      function(data) { 
       $.each(data.items, function() { 

       }); 
      }); 
    }); 

上面的网址目前只显示JSON和两列,我从SQL Server产生JSON越来越有EncoderName和EncoderStatus。该id是displayencoders。

谢谢!

编辑: 我的控制器看起来是这样的:

[UrlRoute(Name = "GetEncoders", Path = "encoders")] 
     public ActionResult GetEncoders() { 
      var encoders = Database.GetEncoders(); 

      return Json(encoders); 
     } 

当编译我的/编码器/样子:

{ 

    * EncoderName: "rmcp2-encoder" 
    * EncoderStatus: "inactive" 

} 
+1

什么是服务器端代码的样子? – tvanfosson 2010-01-14 19:49:29

+1

另外,你的JSON是什么样的? – 2010-01-14 20:05:08

回答

3
$("document").ready(function() { 
    $.getJSON("http://localhost:1909/encoders", function(data) { 

     $("#div-my-table").text("<table>"); 

     $.each(data, function(i, item) { 
      $("#div-my-table").append("<tr><td>" + item.EncoderName +"</td><td>" + item.EncoderStatus + "</td></tr>"); 
     }); 

     $("#div-my-table").append("</table>"); 

    }); 
}); 
+0

谢谢你的完美! – user177215 2010-01-14 20:24:56

1

有趣的是,我使用几乎相同的方法,而是解析json,我实际上应用html格式从我的控制器中的辅助方法的json结构。所以基本上,我的控制器返回完全格式化的json结果,并且所有jquery函数所要做的就是将其放置在相关的div中,在本例中为$('#propertyList')。html(data)。

这里还挺它的外观上的观点:

<script type='text/javascript'> 
    function GetLocationHighlites() { 
     $.ajaxSetup({ cache: false }); 
     $.getJSON('/en/Property/GetLocationHighlites/', null, 
      function(data) { JsonData(data); }); 
    } 

    function JsonData(data) { 
     if (data.length != 0) { 
      $('#propertyList').html(data); 
      $('#propertyList').slideDown('fast'); 
      return false; 
     } 
    }; 

    $(document).ready(function() { 
     GetLocationHighlites(); 
    }); 
</script> 

,并在控制器:

public JsonResult GetLocationHighlites() 
    { 
     IBlockData block = WebPagesMapper.GetLocationHighlites(propertiesWorldwideLuxury); 
     string htmlBlock = string.Format(_block, block.Header, block.Content); 
     return Json(htmlBlock); 
    } 

_block在上述JsonResult GetLocationHighlites()是一个字符串线沿线的常数:

private string _block = @"<div class='Block'> 
         <div class='header'> 
         {0} 
         </div> 
         <div class='BlockContent-body'> 
         {1} 
         </div> 
        </div>"; 

我对这个问题感兴趣,在这种情况下,我的(微弱:)尝试ke ep it DRY。

1

当然,你也可以ALSO/ALTERNATIVELY返回一个字符串(而不是Json结果)。我实际上必须考虑上面的答案,并意识到这可能是我的目的'最好的例子'。所以,我现在(鉴于):

$.get('/en/Property/GetLocationHighlites/' 

而不是:

$.getJSON('/en/Property/GetLocationHighlites/' 

,并修改了控制器的功能:

public string GetLocationHighlites() 
{ 
    IBlockData block = WebPagesMapper.GetLocationHighlites(propertiesWorldwideLuxury); 
    string htmlBlock = string.Format(_block, block.Header, block.Content); 
    return htmlBlock; 
} 

希望这不会把水搅浑。 ..