将JSON对象的列表作为JSON对象进行挖空
问题描述:
我在客户端有一系列敲除绑定的复选框,我需要通过AJAX传递给需要请求的JSON格式的服务器。前端的复选框如下所示:将JSON对象的列表作为JSON对象进行挖空
<div data-bind="foreach: Items">
<input type="checkbox" data-bind="checkedValue: $data, checked: $root.returnedItems, attr: { value: itemNumber}" />
</div>
通过将checkedValue设置为$ data,它将Item对象存储在数组中。
,处理AJAX调用JS的是大致这(改变有些是因为内部公司的辅助功能,可让不同):
self.returnedItems = ko.observableArray()
self.showArray = function() {
$.ajax({
type: 'POST',
url: url,
data: ko.toJSON(self.returnedItems()),
dataType: 'json',
});
}
的ko.toJSON(self.returnedItems())
用于打开对象的列表为JSON字符串通过。但是,它给我的结果是:
[{“item”:“12088”,“desc”:“Radio”,“qty”:1},{“item”:“1T1S”, “desc”:TV“,数量”:1}]
这本身并不是正确的JSON格式需要看起来像这样:
{itemList中:[{ “项目”: “12088”, “说明”: “收音机”, “数量”:1},{ “项目”: “1T1S” ,“desc”:TV“,数量”:1}]}
但我不能为我的生活找到一个很好的方式太做到这一点不改变AJAX调用发送此:
data: "{itemList:" + ko.toJSON(self.returnedItems()) + "}"
其中一期工程,但似乎哈克。是否有一种更简单的方法来在Knockout中传递格式良好的JSON对象列表?
答
数组是有效的JSON,它只是不是JSON 对象。如果你的ajax需要一个JSON对象,你应该可以像这样包装它:ko.toJSON({itemList: self.returnedItems()})
这很完美!我知道这看起来没有什么区别,但清理这些加号是很有帮助的。谢谢 – DasBeasto