2013-03-11 2 views
9

У меня есть коллекция, которая должна отправить POST некоторые данные на свой url, чтобы получить нужные ему данные. Ответ на эти два вопроса, Fetch a collection using a POST request? и Overriding fetch() method in backbone model, сделать это похоже я смогу получить его работать так:Force Backbone fetch всегда использовать POST

fetch: function(options) { 
    this.constructor.__super__.fetch.apply(this, _.extend(options,{data: {whatever: 42}, type: 'POST'})); 
} 

, но Firebug прежнему показывает мне ошибку 404, что происходит, потому что GET является выполняемый против рассматриваемого URL (и базовый маршрут Rails допускает только POST). Должно ли это работать? Если да, то что еще я могу попробовать? Если нет, что я сделал неправильно?

+0

Рассматривали ли вы перекрывая Backbone-х [ 'sync'] (http://backbonejs.org/#Sync) или ['] (ajax' http://backbonejs.org/#Sync-ajax) методы? –

+0

Я бы хотел, если бы 1) я мог понять, как и 2) я мог убедиться, что переопределение всей синхронизации (которая звучит жестко и вовлекается), была необходима, потому что переопределение (кажется, должно быть легко) не имеет шансов работы. – cbmanica

+1

Кстати, фактический ответ заключается в том, что один из сообщений, с которыми я связан, не дал понять, что второй аргумент 'apply' должен быть массивом. D'о. – cbmanica

ответ

14

После прочтения вопроса еще раз, чтобы заставить выборку использовать POST за вызов извлечения. (Спасибо за комментарии)

yourCollection.fetch({data: $.param({id: 1234}), 
    type: 'POST', 
    success: function(d){ 
     console.log('success'); 
    } 
}); 

Другой подход заключается в переопределении реализации AJAX сам использовать POST для всех вызовов.

Backbone.ajax = function() { 
    var args = Array.prototype.slice.call(arguments, 0); 
    _.extend(args[0], { type: 'POST' }); 
    return Backbone.$.ajax.apply(Backbone.$, args); 
}; 
+0

Изменен мой ответ. –

+0

На самом деле не отвечает на мой вопрос о том, почему я не работал, но так как это делает ... спасибо :-) – cbmanica

+0

Я просто добавил еще один вариант ответа, чтобы переопределить все вызовы AJAX по всем направлениям. –

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