2013-10-12 1 views
1

На стороне сервера у меня есть веб-приложение ASP.NET, WebMethod возвращает строку JSON сериализован так же, как это:отображение Issue Json строка с ko.mapping

Object { d= "[{"Id":"1","Name":"COMERCIAL BANK"}, 
{"Id":"2","Name":"AZTEC BANK"}, 
{"Id":"3","Name":"EL SALVADOR BANK"}]" } 

При попытке отображения, которые являются результатом использования var mappedBanks = ko.mapping.fromJSON(data.d), а затем используйте console.log(mappedBanks) все, что я напечатаю, это c() и похоже на то, что сопоставленные банки, которые должны быть массивом, не имеют элементов, потому что я могу повторять его, и когда я пытаюсь напечатать первый элемент, консоль говорит undefined. Есть ли проблемы с Json? или я не буду правильно отображать его.

+0

Строка JavaScript не может иметь двойные кавычки внутри двойных кавычек. Вам нужно либо сбежать от них ('\" '), либо использовать одинарные кавычки (' '') внутри/снаружи. – Pavlo

ответ

2

ko.mapping.toJSON требует первого аргумента, чтобы быть объектом, не массива. Ваш вариант заключается в том, чтобы ваш JSON-кодированный массив был значением свойства.

var mappedBanks = ko.mapping.fromJS({ items: JSON.parse(data.d) }); 
console.log(mappedBanks.items); 
+0

Я сделал то, что вы мне сказали, но я все еще получаю «c()« при печати »mappedBanks .Items " –

+0

На самом деле это работает, но я изменил его для этого" var mappedBanks = {items: JSON.parse (data.d)}; ". –

+0

Ваш код тот же, за исключением того, что' items' будет простым массивом, а не observableArray. –

Смежные вопросы