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

3

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

您可以重写 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();

0
我最终创建了一个自定义方法来保存,与之前所做的完全相同,但至少它更好地封装在模型上定义的方法中。
        saveFunction: function(attributes, callback) {
            $.ajax({
                type: 'POST',
                url: this.url,
                dataType: 'json',
                crossDomain: true,
                data: attributes
            }).done(function( data ) {
                   callback(data);
            }); 
        }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接