2014-09-16 2 views
3

У меня есть приложение, где бэкэнд размещен на другом сервере, чем на лицевой стороне. Бэкэнд уже настроен для разрешения запросов с лицевой стороны, и мы подтвердили это с помощью запроса POST с использованием метода jQuery $.ajax. Тем не менее, мне бы очень хотелось, чтобы настроить метод сохранения на модели Backbone, чтобы сделать то же самое или что-то подобное, чтобы он также работал с Backbone. Это код, я прямо сейчас:Как правильно настроить запрос CORS POST с помощью Backbone.js

$.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

Я в конечном итоге создать специальный метод для сохранения, который делает точно так же, как я делал раньше, но, по крайней мере, это лучше инкапсулировать, так как метод определен на модели ,

 saveFunction: function(attributes, callback) { 
      $.ajax({ 
       type: 'POST', 
       url: this.url, 
       dataType: 'json', 
       crossDomain: true, 
       data: attributes 
      }).done(function(data) { 
        callback(data); 
      }); 
     } 
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

По какой-то странной причине это не работает. –

Смежные вопросы