2013-03-11 15 views
9

Mam kolekcję, która musi wysłać niektórych danych do jej adresu URL, aby uzyskać dane potrzebuje. Odpowiedź na te dwa pytania, Fetch a collection using a POST request? i Overriding fetch() method in backbone model, sprawiają, że wydaje się, że powinna być w stanie zmusić go do pracy tak:Siła Backbone sprowadzić, aby zawsze używać POST

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

, ale Firebug nadal pokazuje mi błąd 404, co się dzieje, ponieważ GET jest wykonywane w odniesieniu do danego adresu URL (a podstawowa trasa Railsowa zezwala tylko na POST). Czy to powinno działać? Jeśli tak, to co jeszcze mogę spróbować? Jeśli nie, to co zrobiłem źle?

+0

Czy bierzesz pod uwagę nadrzędne Backbone w [ 'sync'] (http://backbonejs.org/#Sync) lub [] (' ajax' http://backbonejs.org/#Sync-ajax) metody? –

+0

Chciałbym, jeśli 1) nie mogłem dowiedzieć się, jak i 2) mogę być przekonany, że nadrzędnymi wszystkie zsynchronizowane (co brzmi ciężko i zaangażowania), było konieczne, ponieważ nadrzędnym fetch (co wydaje się, że powinna być łatwa) nie ma szans pracy. – cbmanica

+1

Nawiasem mówiąc, rzeczywistą odpowiedzią jest to, że jedno ze stanowisk, z którymi się połączyłem, nie wyjaśniło, że drugim argumentem "apply" musi być tablica. D'oh. – cbmanica

Odpowiedz

14

Po ponownym przeczytaniu pytanie, oto sposób zmusić sprowadzić do korzystania POST za sprowadzić rozmowę. (Dzięki za komentarze)

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

Innym podejściem jest przesłonić realizacja AJAX Samo użycie POST dla wszystkich połączeń.

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

Zmieniono moją odpowiedź. –

+0

naprawdę nie jest odpowiedź na moje pytanie dlaczego co miałem nie działa, ale ponieważ to robi ... dzięki :-) – cbmanica

+0

Właśnie dodałem inną opcję na moją odpowiedź, aby zastąpić wszystkie AJAX wywołuje całej planszy. –