我有一个应用程序,后端托管在与前端不同的服务器上。后端已经设置为允许来自前端的请求,我们使用jQuery $.ajax
方法通过POST请求确认了这一点。尽管如此,我真正想做的是在Backbone模型上配置save方法以执行相同或类似的操作,以便它也可以与Backbone一起使用。这是我现在的代码:
$.ajax({
type: 'POST',
url: 'https://someurl.com/controller',
crossDomain: true,
data: '{"some":"json"}',
dataType: 'json',
success: function(responseData) {
// handle success
},
error: function (error) {
// handle error
}
});
我想做这样的事情:
myModel.save(null, function(data){
// handle response appropriately
});
你能帮帮我吗?
答案 0 :(得分:0)
您可以覆盖Model.sync
以自定义发送到您服务器的请求。例如,要添加crossdomain: true
属性:
var M = Backbone.Model.extend({
url: 'https://someurl.com/controller',
sync: function(method, model, options) {
_.defaults(options || (options = {}), {
crossDomain: true
});
return Backbone.sync.call(this, method, model, options);
}
});
var m = new M();
m.save();
答案 1 :(得分:0)
我最终创建了一个自定义方法来保存,它与我之前完全相同,但至少它是更好的封装,因为方法是在模型上定义的。
saveFunction: function(attributes, callback) {
$.ajax({
type: 'POST',
url: this.url,
dataType: 'json',
crossDomain: true,
data: attributes
}).done(function( data ) {
callback(data);
});
}