如何让骨干模型做一个POST对fetch
How to get backbone model to do a POST on fetch?
我试图让骨干做一个POST当我调用fetch模型,但没有我已经尝试到目前为止似乎工作。我还需要在fetch中传递多个参数(不仅仅是ID),并且需要使用jsonp.
我尝试在模型中重写同步方法,看起来像下面这样,这样它就会做POST,但它似乎不起作用(一个GET调用仍在进行中)。
sync: function(method, model, options) {
if (method === "read") {
method = "create";
}
return Backbone.sync.call(this, method, model, options);
}
取回是这样的
var model = new MyModel();
var deferred = model.fetch({
dataType: "jsonp",
data: {
parm1: "somevalue",
parm2: false,
parm3: {
type1: "abc",
type2: "123"
}
}
});
你知道为什么这个不能工作吗?
非常感谢!
您可以将type
作为fetch
方法options
参数的一部分传递。将要发生的是,Backbone将sync
你的请求作为一个read
方法,它是,就在调用jQuery的ajax
方法之前,它将覆盖type
,你可以在Backbone的源代码中看到。
var xhr = options.xhr = Backbone.ajax(_.extend(params, options));
所以你的代码应该是这样的:
var model = new MyModel();
var deferred = model.fetch({
type: "post",
dataType: "jsonp",
data: {
parm1: "somevalue",
parm2: false,
parm3: {
type1: "abc",
type2: "123"
}
}
});
请记住,您传递给fetch
方法的options
基本上是jQuery的ajax
选项,扩展了Backbone的选项。
您需要在传递给Backbone.sync
的选项中设置type
为"post"。正如sync
文档中提到的,options
是"成功和错误回调,以及所有其他jQuery请求选项":
sync: function(method, model, options) {
var opts = options;
if (method === "read") {
method = "create";
opts = $.extend({}, opts, {
type: "post"
});
}
return Backbone.sync.call(this, method, model, opts);
}
相关文章:
- Javascript XMLHttpRequest——只有第一个POST请求有效
- 如果语句基于 return if 一个 $.post 命令
- Jquery:如何不允许下一个 $.post(),直到解决前一个
- jQuery File Upload插件如何将文件上传到服务器——每个文件都在一个POST请求中,或者全部在一个请求中
- Mocha正在测试一个post函数
- 一键提交GET表单和另一个POST表单
- 在表单操作之前先发一个$.post
- JQuery:在链接被关注之前执行一个post
- ExpressNodejs-如何将request.files传递到另一个POST请求
- Ajax发送一个get-to-original页面,而不是一个post-to-different页面
- 为什么我不能通过AngularJS's post发送一个post到我的WebApi ?
- Ajax:第一个Post很棒,第二个Post返回URL中的数据
- 添加一个POST参数到fb:login按钮
- 显示一个下拉列表的选定值在一个文本字段(javascript)在一个post wordpress
- 在jQuery中获取URL并创建一个post link ajax
- 三个文本输入到一个POST名称
- 提交一个post请求与json数据和rest服务将生成excel文件,并通过流返回
- 如何让骨干模型做一个POST对fetch
- 如何使一个POST与ajax就像表单提交
- 下载一个文件发送响应一个POST请求通过nodejs?(没有AJAX)