2013-03-11 7 views
9

का उपयोग करने के लिए लाता है मेरे पास एक संग्रह है जिसे डेटा को आवश्यक डेटा प्राप्त करने के लिए अपने यूआरएल में कुछ डेटा पोस्ट करने की आवश्यकता होती है। इन दो सवालों, Fetch a collection using a POST request? और Overriding fetch() method in backbone model का जवाब, यह लगता है कि मैं इस तरह काम करने के लिए इसे पाने के लिए सक्षम होना चाहिए बनाने:फोर्स बैकबोन हमेशा POST

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

, लेकिन Firebug अब भी मुझे एक 404 त्रुटि क्योंकि किसी GET है कि क्या हो रहा है पता चलता प्रश्न में यूआरएल के खिलाफ निष्पादित किया जा रहा है (और अंतर्निहित रेल मार्ग केवल पोस्ट की अनुमति देता है)। क्या यह काम कर रहा है? यदि हां, तो मैं और क्या कोशिश कर सकता हूं? यदि नहीं, तो मैंने क्या गलत किया है?

+0

आप रीढ़ की [ 'sync'] (http://backbonejs.org/#Sync) या [' ajax'] (http://backbonejs.org/#Sync-ajax) तरीके अधिभावी विचार किया है? –

+0

मैं, अगर 1) मैं समझ सकता हूं कि कैसे, और 2) मुझे विश्वास हो सकता है कि सभी सिंक (जो कठिन और शामिल लगता है) को ओवरराइड करना आवश्यक था क्योंकि ओवरराइडिंग fetch (जो ऐसा लगता है कि यह आसान होना चाहिए) में कोई मौका नहीं है काम करने का – cbmanica

+1

संयोग से, वास्तविक उत्तर यह है कि मैंने जिन पदों से लिंक किया है उनमें से एक यह स्पष्ट नहीं करता है कि 'लागू' करने के लिए दूसरा तर्क एक सरणी होना चाहिए। डी 'ओह। – cbmanica

उत्तर

14

प्रश्न फिर से पढ़ने के बाद, यहां लाने के लिए लाने के लिए एक तरीका है POST प्रति fetch कॉल का उपयोग करने के लिए। (टिप्पणी के लिए धन्यवाद)

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 कॉल को ओवरराइड करने के लिए मेरे उत्तर पर एक और विकल्प जोड़ा है। –