Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将JSON对象列表作为敲除中的JSON对象传递_Json_Knockout.js - Fatal编程技术网

将JSON对象列表作为敲除中的JSON对象传递

将JSON对象列表作为敲除中的JSON对象传递,json,knockout.js,Json,Knockout.js,在客户端,我有一系列敲除绑定的复选框,我需要通过AJAX将这些复选框传递给服务器,服务器需要JSON格式的请求。前端的复选框如下所示: <div data-bind="foreach: Items"> <input type="checkbox" data-bind="checkedValue: $data, checked: $root.returnedItems, attr: { value: itemNumber}" /> </div>

在客户端,我有一系列敲除绑定的复选框,我需要通过AJAX将这些复选框传递给服务器,服务器需要JSON格式的请求。前端的复选框如下所示:

 <div data-bind="foreach: Items">
     <input type="checkbox" data-bind="checkedValue: $data, checked: $root.returnedItems, attr: { value: itemNumber}" />
 </div>
ko.toJSON(self.returnedItems())
用于将对象列表转换为要传递的JSON字符串。然而,它给我的结果是:

[{“项目”:“12088”,“描述”:“收音机”,“数量”:1},{“项目”:“1T1S”,“描述”:TV”,数量:1}]

这本身不是正确的JSON格式(这在Hindshight中是有意义的),因为它没有与数组外括号关联的键,它需要如下所示:

{itemList:[{“item”:“12088”,“desc”:“收音机”,“数量”:1},{“item”:“1T1S”,“desc”:TV”,数量:1}]}

但就我的一生而言,我无法找到一种在不改变AJAX调用的情况下实现这一点的好方法:

data:“{itemList:”+ko.toJSON(self.returnedItems())+“}”


这很管用,但看起来很粗糙。有没有一种更简单的方法可以在Knockout中传递格式良好的JSON对象列表?

数组是有效的JSON,它不是JSON对象。如果您的ajax需要一个JSON对象,您应该能够像这样包装它:
ko.toJSON({itemList:self.returnedItems()})

,这太完美了!我知道这看起来没有多大区别,但清除这些加号是一个很大的帮助。谢谢
self.returnedItems = ko.observableArray()
self.showArray = function () {
     $.ajax({
        type: 'POST',
        url: url,
        data: ko.toJSON(self.returnedItems()),
        dataType: 'json',
    });
}