पर अपडेट होने से मॉडल को रोकता है मैं एक वेब एप्लिकेशन पर काम कर रहा हूं जो पाइथन के चेरीपी फ्रेमवर्क के साथ लिखे गए एक आरामदायक एपीआई द्वारा संचालित है। मैंने jQuery इंटरफ़ेस को jQuery और सर्वर साइड टेम्पलेट्स के संयोजन के साथ लिखना शुरू कर दिया, लेकिन आखिरकार बैकबोन.जेएस पर स्विच किया क्योंकि jQuery हाथ से बाहर हो रहा था।बैकबोन.जेएस में HTTP बेसिक प्रमाणीकरण शीर्षलेख जोड़ना सिंक फ़ंक्शन सेव()
दुर्भाग्यवश, मुझे सर्वर के साथ समन्वयित करने के लिए मेरे मॉडल प्राप्त करने में कुछ समस्याएं आ रही हैं।
$(function() {
var User = Backbone.Model.extend({
defaults: {
id: null,
username: null,
token: null,
token_expires: null,
created: null
},
url: function() {
return '/api/users';
},
parse: function(response, options) {
console.log(response.id);
console.log(response.username);
console.log(response.token);
console.log(response.created);
return response;
}
});
var u = new User();
u.save({'username':'asdf', 'token':'asdf'}, {
wait: true,
success: function(model, response) {
console.log(model.get('id'));
console.log(model.get('username'));
console.log(model.get('token'));
console.log(model.get('created'));
}
});
});
आप शायद बता सकते हैं के रूप में, विचार यहाँ सेवा के साथ एक नया उपयोगकर्ता रजिस्टर करने के लिए है: यहाँ मेरी कोड से एक त्वरित उदाहरण है। जब मैं u.save();
पर कॉल करता हूं, तो बैकबोन वास्तव में सर्वर पर एक POST अनुरोध भेजता है। यहाँ प्रासंगिक बिट कर रहे हैं:
अनुरोध:
Request URL: http://localhost:8080/api/users
Request Method: POST
Request Body: {"username":"asdf","token":"asdf","id":null,"token_expires":null,"created":null}
प्रतिक्रिया:
Status Code: HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 109
Response Body: {"username": "asdf", "created": "2013-02-07T13:11:09.811507", "token": null, "id": 14, "token_expires": null}
आप देख सकते हैं, सर्वर ने अनुरोध को संसाधित करता है और एक id
और एक वापस भेजता है created
के लिए मूल्य। लेकिन किसी कारण से, जब मेरा कोड console.log(u.id);
पर कॉल करता है, तो मुझे null
मिलता है, और जब मेरा कोड console.log(u.created);
पर कॉल करता है, तो मुझे undefined
मिलता है।
टीएल; डी: save()
पर कॉल के बाद बैकबोन.जेएस मेरी ऑब्जेक्ट्स में क्यों नहीं बदल रहा है?
संपादित करें: मैं ऊपर कोड संशोधित करने के लिए इतना है कि मॉडल गुण एक success
कॉलबैक में प्राप्त फंक्शन का उपयोग करके पहुंचा जाता है। यह मूल कोड के साथ किसी भी समवर्ती समस्याओं को हल करना चाहिए।
मैंने मॉडल के parse
फ़ंक्शन में कुछ कंसोल लॉगिंग भी जोड़ा है। विचित्र रूप से पर्याप्त, इनमें से प्रत्येक undefined
है ... क्या इसका मतलब यह है कि Backbone.js मेरी प्रतिक्रिया JSON को पार्स करने में विफल रहा है?
संपादित करें 2: कुछ दिन पहले, मुझे पता चला कि इस मुद्दे को वास्तव में लगता है कि मैं बुनियादी HTTP प्रमाणीकरण सक्षम करने के लिए प्रत्येक अनुरोध को जोड़ने था एक कस्टम हेडर था। विवरण के लिए this answer देखें।
आपका कोड ठीक लग रहा है (सिवाय इसके कि आप '' Model.urlRoot' Model.url' के बजाय का उपयोग करना चाहिए, लेकिन यह समस्या यहाँ नहीं है)। आपके कोड के पहले संशोधन में समस्याएं थीं, लेकिन क्या आप पूरी तरह से सुनिश्चित हैं कि आपके वर्तमान संपादन में सटीक कोड अभी भी विफल रहता है? – jevakallio