自定义json在淘汰赛中不起作用

时间:2014-04-15 17:17:02

标签: c# jquery asp.net-mvc knockout.js

我有这个HTML:

  <select data-bind="options: products, optionsText:Nome"></select>

这个脚本:

var ViewModel = function () {
    var self = this;
    var dados;
    self.category = ko.observable();
};

var products;

$.ajax({
    type: "GET",
    url: "/api/APIProduto",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
        //products = [{ "products": [{ "CadastroItemOrcamento": [], "ID": 8, "MarcaNome": "MudarNome", "MarcaEspecificacao": "INOCULANTE", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 9, "MarcaNome": "MudarNome", "MarcaEspecificacao": "STANDAK TOP", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 10, "MarcaNome": "MudarNome", "MarcaEspecificacao": "BROADACRE EXTRA", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 11, "MarcaNome": "MudarNome", "MarcaEspecificacao": "BOOSTER", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 12, "MarcaNome": "MudarNome", "MarcaEspecificacao": "CLORETO DE POTÁSSIO", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 13, "MarcaNome": "MudarNome", "MarcaEspecificacao": "PRIORIXTRA", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 14, "MarcaNome": "MudarNome", "MarcaEspecificacao": "APROUCH PRIMA", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 15, "MarcaNome": "MudarNome", "MarcaEspecificacao": "GLIFOSATO", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 16, "MarcaNome": "MudarNome", "MarcaEspecificacao": "LANNATE BR", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 17, "MarcaNome": "MudarNome", "MarcaEspecificacao": "NOMOLT", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 18, "MarcaNome": "MudarNome", "MarcaEspecificacao": "PREMIO", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 19, "MarcaNome": "MudarNome", "MarcaEspecificacao": "ÓLEO MINERAL (FUNGICIDA)", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 20, "MarcaNome": "MudarNome", "MarcaEspecificacao": "ÓLEO MINERAL (HERBICIDA)", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 21, "MarcaNome": "MudarNome", "MarcaEspecificacao": "ESPALHANTE SILICONADO (TODOS)", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 22, "MarcaNome": "MudarNome", "MarcaEspecificacao": "BROADACRE MN", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 23, "MarcaNome": "MudarNome", "MarcaEspecificacao": "GROWFLOW", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 24, "MarcaNome": "MudarNome", "MarcaEspecificacao": "BORO SUPER", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 25, "MarcaNome": "MudarNome", "MarcaEspecificacao": "REFORCE", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 26, "MarcaNome": "MudarNome", "MarcaEspecificacao": "AGRIK", "MarcaAtiva": true }], "Nome": "MudarNome" }, { "products": [{ "CadastroItemOrcamento": [], "ID": 4, "MarcaNome": "MudarNomeTeste", "MarcaEspecificacao": "SUPERFOSFATO SIMPLES", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 5, "MarcaNome": "MudarNomeTeste", "MarcaEspecificacao": "ROUNDUP", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 6, "MarcaNome": "MudarNomeTeste", "MarcaEspecificacao": "ÓLEO MINERAL", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 7, "MarcaNome": "MudarNomeTeste", "MarcaEspecificacao": "SEMENTE DE SOJA", "MarcaAtiva": true }], "Nome": "MudarNomeTeste" }];
        products = data
        console.log(data)
        ko.applyBindings(ViewModel());

    },
    error: function (error) {
        alert(error.status + "<--and--> " + error.statusText);
    }
});

如果我使用内部ajax的comented产品,该操作有效。如果我使用API​​(MVC / C#)的数据结果:

public string GetCadastroProdutoes()
{
    var data = from a in db.CadastroProduto
        group a by a.MarcaNome into Marcas
        select new
        {

            products = db.CadastroProduto.Where(x => x.MarcaNome == Marcas.Key),
            Nome = Marcas.Key
        };
    JavaScriptSerializer jss = new JavaScriptSerializer();
    return jss.Serialize(data);
}

如果我运行代码,结果是收到的集合中的每个字母都会在select中返回一个选项。

1 个答案:

答案 0 :(得分:0)

问题是......当我使用此归因时:

products = [{ "products": [{ "CadastroItemOrcamento": [], "ID": 8, "MarcaNome": "MudarNome", "MarcaEspecificacao": "INOCULANTE", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 9, "MarcaNome": "MudarNome", "MarcaEspecificacao": "STANDAK TOP", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 10, "MarcaNome": "MudarNome", "MarcaEspecificacao": "BROADACRE EXTRA", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 11, "MarcaNome": "MudarNome", "MarcaEspecificacao": "BOOSTER", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 12, "MarcaNome": "MudarNome", "MarcaEspecificacao": "CLORETO DE POTÁSSIO", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 13, "MarcaNome": "MudarNome", "MarcaEspecificacao": "PRIORIXTRA", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 14, "MarcaNome": "MudarNome", "MarcaEspecificacao": "APROUCH PRIMA", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 15, "MarcaNome": "MudarNome", "MarcaEspecificacao": "GLIFOSATO", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 16, "MarcaNome": "MudarNome", "MarcaEspecificacao": "LANNATE BR", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 17, "MarcaNome": "MudarNome", "MarcaEspecificacao": "NOMOLT", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 18, "MarcaNome": "MudarNome", "MarcaEspecificacao": "PREMIO", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 19, "MarcaNome": "MudarNome", "MarcaEspecificacao": "ÓLEO MINERAL (FUNGICIDA)", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 20, "MarcaNome": "MudarNome", "MarcaEspecificacao": "ÓLEO MINERAL (HERBICIDA)", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 21, "MarcaNome": "MudarNome", "MarcaEspecificacao": "ESPALHANTE SILICONADO (TODOS)", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 22, "MarcaNome": "MudarNome", "MarcaEspecificacao": "BROADACRE MN", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 23, "MarcaNome": "MudarNome", "MarcaEspecificacao": "GROWFLOW", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 24, "MarcaNome": "MudarNome", "MarcaEspecificacao": "BORO SUPER", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 25, "MarcaNome": "MudarNome", "MarcaEspecificacao": "REFORCE", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 26, "MarcaNome": "MudarNome", "MarcaEspecificacao": "AGRIK", "MarcaAtiva": true }], "Nome": "MudarNome" }, { "products": [{ "CadastroItemOrcamento": [], "ID": 4, "MarcaNome": "MudarNomeTeste", "MarcaEspecificacao": "SUPERFOSFATO SIMPLES", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 5, "MarcaNome": "MudarNomeTeste", "MarcaEspecificacao": "ROUNDUP", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 6, "MarcaNome": "MudarNomeTeste", "MarcaEspecificacao": "ÓLEO MINERAL", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 7, "MarcaNome": "MudarNomeTeste", "MarcaEspecificacao": "SEMENTE DE SOJA", "MarcaAtiva": true }], "Nome": "MudarNomeTeste" }];

我只是说product变量是一个json对象,但当y得到api结果时我有一个字符串。

解决方案是通过JSON解析这样的归属:

products = JSON.parse(data);

所以字符串结果将在Json对象中转换。