Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/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
Javascript 主干网使用emulatejson,无需获取模型作为参数_Javascript_Backbone.js_Underscore.js - Fatal编程技术网

Javascript 主干网使用emulatejson,无需获取模型作为参数

Javascript 主干网使用emulatejson,无需获取模型作为参数,javascript,backbone.js,underscore.js,Javascript,Backbone.js,Underscore.js,我有一个模型,它是一种当用户点击按钮时发生的“动作”,用于设置和删除事件。事件本身是另一个模型和另一个集合,因此从技术上讲,我可以将此请求发送到API,而不必将其作为模型,因为在事件列表发生更改时,我可以独立更新事件列表。无论如何,这并不能解决我向服务器发送数据的问题 我的主要问题: 当我使用emulateJSON=true确保POST作为应用程序/x-www-form-urlencoded类型发送时,我的所有数据都包装在一个模型参数中,如下所示: model:{ "eventid":"

我有一个模型,它是一种当用户点击按钮时发生的“动作”,用于设置和删除事件。事件本身是另一个模型和另一个集合,因此从技术上讲,我可以将此请求发送到API,而不必将其作为模型,因为在事件列表发生更改时,我可以独立更新事件列表。无论如何,这并不能解决我向服务器发送数据的问题

我的主要问题:

当我使用emulateJSON=true确保POST作为应用程序/x-www-form-urlencoded类型发送时,我的所有数据都包装在一个模型参数中,如下所示:

model:{    
"eventid":"3",
"eventuniqueid":"abasdfasfafd",
"type":"Birthday",
"name":"Add"}
我想要的是将它们作为表单参数,如下所示:

eventid:"3",
eventuniqueid:"abasdfasfafd",
type:"Birthday",
name:"Add"

这容易吗?

容易吗?不可以。您必须重新定义的行为(该函数在Backbone.sync中定义)。没有参数允许您自定义它

您必须更改该部分:

// For older servers, emulate JSON by encoding the request into an HTML-form.
if (options.emulateJSON) {
  params.contentType = 'application/x-www-form-urlencoded';
  params.data = params.data ? {model: params.data} : {};
}
通过删除我想说的最后一行,params.data就在前面定义:

if (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {
  params.contentType = 'application/json';
  params.data = JSON.stringify(options.attrs || model.toJSON(options));
}
编辑:
事实上,通过在保存时以您喜欢的方式传递数据,您应该很好(您将拥有数据和主干的模型参数)


哇,很简单。我试过类似的方法,但可能用错了括号。谢谢。
myModel.save({}, {data: myModel.toJSON()});