如何使用Backbone.js正确设置CORS POST请求

时间:2014-09-16 01:48:58

标签: jquery ajax backbone.js cors

我有一个应用程序,后端托管在与前端不同的服务器上。后端已经设置为允许来自前端的请求,我们使用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
});

你能帮帮我吗?

2 个答案:

答案 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);
            }); 
        }