Javascript 淘汰赛不';t将Json转换为可观察

Javascript 淘汰赛不';t将Json转换为可观察,javascript,json,model-view-controller,knockout.js,Javascript,Json,Model View Controller,Knockout.js,我编写了一个简单的应用程序来从服务器获取JSON数据 C#代码 public JsonResult Read() { var产品=分贝产品; 返回Json(GetProducts(),JsonRequestBehavior.AllowGet); } public IEnumerable<Product> GetProducts() { var data = db.Products.ToList(); return (data);

我编写了一个简单的应用程序来从服务器获取JSON数据 C#代码 public JsonResult Read() { var产品=分贝产品; 返回Json(GetProducts(),JsonRequestBehavior.AllowGet); }

    public IEnumerable<Product> GetProducts()
    {
        var data = db.Products.ToList();
        return (data);
    }
解析JSON之后,我不能使用解析的对象来更新可观察对象


有人知道为什么会发生这种情况吗?

如果您想将
self.products
的值(或任何其他可观察值)设置为
JSON.parse
的结果,您需要这样调用
self.products(JSON.parse(data))
。可观察对象类似于函数,因此需要将其视为函数;-)

感谢您的帮助,您是对的,但是,即使我将代码更改为$.getJSON(“,function(data){self.products(JSON.parse(data));});它仍然不起作用,我的代码还有其他问题吗?所以你想让JSON中每个项目的每个属性都成为ko.observable?如果是,我建议使用knockouts映射插件,这将为您提供帮助。谢谢,我希望遵循knockoutjs学习中的相同示例,从odata获取所有电子邮件并绑定到列表,但我编写了一个返回JSON数据的操作,因此我使用$.getJSON获取数据并绑定到列表。在本教程中,它不需要绑定每个项目的所有属性,它只需要获取数据并更新可观察文件夹,然后为每个电子邮件循环。我将首先尝试映射插件,看看它是否有效。虽然这会起作用,但您可能应该使用击倒observeLearRay()
<div>
<table data-bind="with: products">
    <thead><tr><th>From</th><th>To</th><th>Subject</th></tr></thead>
    <tbody data-bind="foreach: Object">
        <tr>
            <td data-bind="text: id"></td>
            <td data-bind="text: name"></td>
            <td data-bind="text: description"></td>
        </tr>    
    </tbody>
</table>
</div>
 <script type="text/javascript">
     function ProductsViewModel() {
         var self = this;
         self.products = ko.observable();
         $.getJSON("http://localhost:50998/Home/Read", function (data) {
             self.products = JSON.parse(data);
         });

}
     ko.applyBindings(new ProductsViewModel());
 </script>
[{"ID":1,"Name":"Roger","Description":"Test1"},{"ID":2,"Name":"Roger2","Description":"Test2"}]