我试图从使用knockout.js库在MVC4中编写的JSON响应中提取数据。我有三个需要填充的区域,第一个是多选框。我看过网上的例子和参考文献,以及这里链接的小提琴手无济于事。我遇到问题的区域是填充arrayTwo和网格数组,其中包含在arrayOne列表中选择的每个项目的所有数据。
function viewModel() {
this.arrayOne = ko.observableArray();
this.chosenarrayOne = ko.observableArray();
this.arrayTwo = ko.observableArray();
this.gridArray = ko.observableArray();
this.chosenarrayTwo = ko.observableArray();
this.chosenarrayOne.subscribe(function (nIds) {
mvvm.arrayTwo(undefined);
mvvm.gridArray(undefined);
var nDx;
if (nIds != null) {
for (nDx = 0; nDx < nIds.length; nDx++) {
$.ajax({
url: '{Working URL Omitted}',
data: { nValue: arrayOne[nDx] },
type: 'GET',
success: function (data) {
mvvm.arrayTwo(data);
},
error: function () {
alert('Array Two ajax error');
}
});
$.ajax({
url: '{Working URL Omitted}',
type: 'GET',
data: { nValue: nIds[nDx] },
success: function (data) {
// Example of what I would like to happen, however I get nothing back
mvvm.gridArray.arrayPushAll(data);
//mvvm.gridArray(data);
},
error: function () {
alert('Grid Array ajax error');
}
});
}
}
}, this);
}
var mvvm = new viewModel();
ko.applyBindings(mvvm);
$.ajax({
url: '{Working URL Omitted}',
type: 'GET',
success: function (data) {
mvvm.arrayOne(data);
},
error: function () {
alert('Array One ajax call error');
}
});
我已经尝试过json-ing响应以查看返回的内容,并以数组形式返回值。但是,如果arrayOne var中有多个元素,则不会返回任何内容。
答案 0 :(得分:1)
在你的ajax调用中,你发送了错误的数据。如果你想获得observableArray中的值,你必须这样:
arrayOne()[nDx] instead of arrayOne[nDx]
选中此example