c# - Custom json doesnt work in knockout -


i have html:

  <select data-bind="options: products, optionstext:nome"></select> 

and script:

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);     } }); 

the operation works if use comented products inner ajax. if use data result api (mvc/c#):

public string getcadastroprodutoes() {     var data = in db.cadastroproduto         group a.marcanome marcas         select new         {              products = db.cadastroproduto.where(x => x.marcanome == marcas.key),             nome = marcas.key         };     javascriptserializer jss = new javascriptserializer();     return jss.serialize(data); } 

if run code result every letter in collection received return option in select.

the problem is... when use attribution:

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" }]; 

i products variable json object, when y api result have string.

the solution parse json in attribution this:

products = json.parse(data); 

so string result converted in json object.


Comments

Popular posts from this blog

javascript - jquery or ashx not working -

opencv - DataType<cv::detail::deriv_type>::depth what is it used for -

python 3.x - Mapping specific letters onto a list of words -