2012-01-14 8 views
8

मेरे पास कुछ टेस्ट कोड है जो मैं बैकबोन.जेएस को समझने के लिए उपयोग करने का प्रयास कर रहा हूं। जब मैं एक मॉडल ऑब्जेक्ट बैकबोन पर नष्ट कहता हूं तो मेरी बाकी सेवा के लिए एक डेली अनुरोध करता है। लेकिन, मैं कोई भी आईडी नहीं देख सकता जो दर्शाता है कि अनुरोध डेटा, क्वेरीस्ट्रिंग, बॉडी या कहीं भी कौन सा रिकॉर्ड हटाया जा रहा है।backbone.js को कॉल करते समय रिकॉर्ड आईडी प्राप्त करने के लिए

मेरे मॉडल में एक आईडी प्रॉपर्टी है और मैंने इसे 1 का मान सौंपा है। क्या मुझे यह सुनिश्चित करने के लिए कुछ करना है कि आईडी सर्वर के माध्यम से गुजरती है? या क्या कोई अन्य तरीका है कि मुझे पता चल जाएगा कि कौन सा रिकॉर्ड हटाया जा रहा है?

var AccountModel = Backbone.Model.extend({ 
    url: 'Account/Update', 
    id: null, 
    username: '' 
}); 

var accountM = new AccountModel({id: 1, username: 'test'}); 

accountM.destroy(); 

जब मैं डिबगर मैं देख रहा हूँ AJAX अनुरोध किए जाने को देखो, यह सिर्फ इस तरह दिखता है:

Request URL:http://localhost/probli/Account/Update 
Request Method:DELETE 
Status Code:200 OK 

वहाँ doens't लगता है -

संपादित करें यहाँ प्रासंगिक कोड है एक आईडी या कुछ भी होने के लिए और कोई पोस्ट डेटा नहीं है। क्या मैं गलत हूं? धन्यवाद।

+1

आप साझा कर सकता अपने कृपया टेस्ट कोड? –

+0

मैंने अभी कोड जोड़ने के लिए पोस्ट संपादित किया है। तलाश के लिए धन्यवाद! – Jason

उत्तर

17

आप अपने मॉडल की urlRoot विशेषता स्थापित करना चाहिए तो रीढ़ संभाल DELETE यूआरएल का निर्माण करते हैं:

var AccountModel = Backbone.Model.extend({ 
    urlRoot: 'Account/Update', 
    id: null, 
    username: '' 
}); 

यह निम्न अनुरोध का कारण होगा जब accountM.destroy() कहा जाता है:

Request URL:http://localhost/probli/Account/Update/1 
Request Method:DELETE 
Status Code:200 OK 
+0

के साथ संग्रह में मौजूद है जो बिल्कुल है - धन्यवाद! – Jason

+0

शून्य आईडी कैसे 1 में बदल जाती है? – lulalala

+0

@lulalala इस लाइन के साथ नया उदाहरण बनाते समय 'नया खाता मॉडल ({आईडी: 1, उपयोगकर्ता नाम:' test '}); ' –

1

Backbone.sync यूआरएल में आईडी के साथ एक सरल अनुरोध के रूप में नष्ट को वापस भेज देगा। उदाहरण के लिए:

DELETE http://example.com/foos/1

यह HTTP 1 की एक आईडी के साथ एक Foo के लिए हटाना है।

एमवीसी वेब सर्वर जैसे रेल, एएसपी.नेट एमवीसी, और यहां तक ​​कि सिनात्रा और अन्य सरल सर्वर, यह एक पैरामीटर होगा जो आपके सर्वर के माध्यम से आता है।

उदाहरण के लिए, सिनात्रा में:


delete "/foos/:id" do 

    id = params[:id] # the id from the url/route 

    foo = Foos.find(id) # get the foo 
    foo.destroy 
    return {}.to_json 
end 

आप देख सकते हैं, मैं मार्ग में एक पैरामीटर परिभाषित, :id को फोन किया और मेरी कोड params डेटा के माध्यम से इसे उपयोग करने में सक्षम था। तब मुझे Foo प्रश्न में मिला, इसे नष्ट कर दिया, और एक खाली JSON परिणाम लौटा - जो कि विनाश के दौरान भी बैकबोन द्वारा आवश्यक है।

उम्मीद है कि मदद करता है।

+0

उत्तर के लिए धन्यवाद। क्या रीढ़ की हड्डी जावास्क्रिप्ट में कहीं है जो आप निर्दिष्ट करते हैं कि आईडी यूआरएल में कहाँ जोड़ा जाएगा? मैंने अभी कुछ नमूना कोड पोस्ट किया है और डबगर को देखकर मैं अनुरोध कर सकता हूं लेकिन कोई आईडी नहीं है। धन्यवाद। – Jason

+0

इस के लिए कोई अद्यतन। मुझे एक ही समस्या है। अनुरोध अनुरोध भेजा गया है लेकिन यूआरएल में 'आईडी' नहीं भेजा गया है। मैंने जांच की है कि संग्रह में वैध आईडी – detj

संबंधित मुद्दे