我从我的网站中的控制台收到错误,它来自Jquery框架。
我想我可能有$ .each(data.results,function(index,items)){}错误,或者我需要在其下面添加更多内容来指定我想要在DOM中显示的数据。我是淘汰赛和Jquery的新手。
我正在使用wcf服务将MySql数据库中的数据输出到Json中供我的应用程序读取。我正在使用knockout来显示并确保数据在更改时更新。
我的ViewModel如下所示:
$(document).ready(function () {
var machineDataViewModel = {
machineDataItems: ko.observableArray([]),
loadMachineDataItems: function () {
$.getJSON("http://localhost/JsonRestful/Service1.svc/GetMachineData", function (data) {
machineDataViewModel.machineDataItems.removeAll();
$.each(data.results, function (index, item) {
machineDataViewModel.machineDataItems.push(new machineDataModel(item));
});
});
}
};
ko.applyBindings(machineDataViewModel);
machineDataViewModel.loadMachineDataItems();
//setInterval( loadMachineDataItems, 10000 );
});
我视图中的元素我试图将其映射到:
<div id="knockout" data-bind="foreach: machineDataItems">
<p id="machineNum" data-bind="text: mach_no"></p>
<div id="Completed" data-bind="text: VAR1"></div>
<div id="Style" data-bind="text: VAR2"></div>
<div id="PUPC" data-bind="text: VAR3"></div>
<div id="RPM" data-bind="text: VAR4"></div>
</div>
答案 0 :(得分:0)
我认为你的问题是作为字符串json表示的数据,也许在你的传入数据上使用JSON.parse将它变成JSON
我过去也遇到过这个问题,我的Restfull API中有一个字符串,Jquery在试图预告时抱怨它,所以我会说你有同样的问题。
使用伪造的json和你的代码工作小提琴:http://jsfiddle.net/75otf0s8/4/
loadMachineDataItems: function () {
(function (data) {
machineDataViewModel.machineDataItems.removeAll();
$.each(data.results, function (index, item) {
machineDataViewModel.machineDataItems.push(new machineDataModel(item));
});
// passing in bogus data to the iffe as good json
})({results: [{mach_no: '1', VAR1: '2', VAR2: '3', VAR3: '4', VAR4: '5'},
{mach_no: 'a1', VAR1: 'a2', VAR2: 'a3', VAR3: 'a4', VAR4: 'a5'},
{mach_no: 'b1', VAR1: 'b2', VAR2: 'b3', VAR3: 'b4', VAR4: 'b5'}]});
}
当我将我的moc数据传递到$ .getJSON所拥有的数据时,它的工作原理让我几乎可以肯定getJSON会返回你的字符串,而不是Json $ .each会迭代过来。
如果您无法让JSON.prase工作,请随意发表评论。
编辑: 也许请阅读以下Knockout Documentation。如您所见,他们获取数据,将其转换为正确的JSON,然后他们可以使用!您只需将data.results替换为JSON.prase返回的值