Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.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
Jquery 如何将主干集合包装到JSON对象中?_Jquery_Json_Backbone.js - Fatal编程技术网

Jquery 如何将主干集合包装到JSON对象中?

Jquery 如何将主干集合包装到JSON对象中?,jquery,json,backbone.js,Jquery,Json,Backbone.js,我已经扩展了主干集合类,以包含一个“save”方法,它本质上是一个要同步的代理。无论何时执行“保存”,都会向后端提交一个对象数组。但是,后端当前的结构不能处理直接的集合,它需要对象。有人对如何将此集合“包装”到对象中有什么建议吗 我试过: var objectCollection = {}; objectCollection['key'] = backboneCollection.models; 但是上面的结果是“model没有toJSON方法”错误——因为我只是代理sync。谢谢。要为主干.

我已经扩展了主干集合类,以包含一个“save”方法,它本质上是一个要同步的代理。无论何时执行“保存”,都会向后端提交一个对象数组。但是,后端当前的结构不能处理直接的集合,它需要对象。有人对如何将此集合“包装”到对象中有什么建议吗

我试过:

var objectCollection = {};
objectCollection['key'] = backboneCollection.models;

但是上面的结果是“model没有toJSON方法”错误——因为我只是代理sync。谢谢。

要为
主干.sync
提供自定义格式,您必须将数据作为JSON字符串传递,并提供正确的
内容类型。大概是这样的:

var M=Backbone.Collection.extend({
    url: '/echo/json/',

    save: function() {
        var data={}, opts= {};
        data.key=this.toJSON();

        opts.contentType = 'application/json';
        opts.data = JSON.stringify(data);

        Backbone.sync.call(this,'update',this, opts);
    }
});

还有一个Fiddle(检查控制台以查看请求)

虽然您可以使用JSON.org中的JSON对象(它有一个stringify方法),但这仍然无法实现。这是因为根据定义,JSON不能表示函数,我假设
backboneCollection.models
将包含函数,对吗?感谢示例/fiddle,它对理解该方法非常有帮助。我不知道sync在options参数中接受并处理数据——我认为它只需要成功和错误回调。