हैलो बैकबोन निंजा,बैकबोन समन्वयन त्रुटि प्रतिक्रिया कोड के बाद भी 200
यह मेरा पहली बार रीढ़ का उपयोग कर - तो मेरे "noob" सत्ता क्षमा करें। मेरी कार्यक्षमता (एक बड़े ऐप का हिस्सा) में, मेरे पास एक बैकबोन व्यू वीए है, जिसे मॉडल एमए (जैसा होना चाहिए) द्वारा समर्थित है और सर्वर की तरफ स्प्रिंग एमवीसी में @RequestBody और @ResponseBody के साथ स्प्रिंग नियंत्रक विधियों को एनोटेट किया गया है। मुझे जैक्सन स्प्रिंग के साथ ठीक काम कर रहा है।
अब, अनुप्रयोग में,
Backbone.Model
|_ BaseModel (custom base model for our app)
|_ mA (my model)
एमए अपनी ही endpoint है और यह रीढ़ सफलतापूर्वक कॉल है कि जब एक PUT अनुरोध यानी बनाने, जब मैं() को बचाने फोन देखें VA से एक सबमिट बटन ईवेंट हैंडलर से जैसे इतना:
this.model.save ({
success : function(){
alert('Request submitted successfully');
},
error : function(){
alert('Something awful happened.');
}
});
define([], function() {
window.BaseModel = Backbone.Model.extend({
......
});
onSyncError : function(model, response) {
switch (response.status) {
case 403:
[...//some more code ]
default:
alert(bundle.getDefault('HTTP_RESP_OTH') + response.status);
}
},
onSyncSuccess : function(model, response) {
alert('Sync done! ');
},
sync : function(method, model, options) {
options.error = this.onSyncError;
Backbone.sync.call(this, method, model, options);
....//some more stuff.
},
}
स्प्रिंग नियंत्रक विधि:
हमारे BaseModel निम्नलिखित है
@RequestMapping(value="/resource/xyz/{id}.json", method = RequestMethod.PUT, consumes = {"application/json"}
, produces = {"application/json"})
@ResponseBody
public Map<String,String> methodX(@RequestBody XyzDTO xyzDTO){
....
map.put("msg", "success");
return map;
}
इसके अलावा, इससे पहले कि मैं सही कर बचाने कहते हैं, मैं कुछ मॉडल गुण, सर्वर साइड डीटीओ के बाद से संशोधित इस तरह की एक अलग संरचना है:
this.model.unset("abc",{ silent: true });
this.model.set({ abc: {id : "2",xyz:{ ... //more code });
समस्या यह है कि, कॉलिंग() को पुट उत्पन्न करता है अनुरोध करें और स्प्रिंग एंडपॉइंट हैंडलर को सफलतापूर्वक कॉल करें, लेकिन मुझे एक प्रतिक्रिया कोड 200 मिलता है (जो मुझे उम्मीद है), लेकिन जब मैं फायरबग के साथ कॉल का पता लगाता हूं, तो यह ऑनसिंक त्रुटि विधि में जाता है और मुझे एक त्रुटि संदेश देता है (क्योंकि इसमें "डिफ़ॉल्ट" मामला)।
बैकबोन दस्तावेज़ कहता है: "जब JSON प्रतिक्रिया लौटाते हैं, तो सर्वर द्वारा परिवर्तित किए गए मॉडल के गुणों को भेजें, और क्लाइंट पर अद्यतन होने की आवश्यकता है"। खैर, मुझे क्लाइंट साइड पर मॉडल को अपडेट करने की आवश्यकता नहीं है, इसकी आखिरी स्क्रीन में से एक है और मुझे बस सफलता/त्रुटि के उपयोगकर्ता को बताने की जरूरत है और उसे मुख्य पृष्ठ/डैशबोर्ड पर रीडायरेक्ट करना है।
मैंने कुछ और पढ़ा है, और यह कोड 200 लगता है क्योंकि प्रतिक्रिया पर्याप्त नहीं है - सिंक विफल होने के कारण जेएसओएन पार्सिंग त्रुटियां हो सकती हैं।
मैंने फायरबग में प्रतिक्रिया की जांच की, और प्रतिक्रिया JSON {"msg": "सफलता"} की तरह दिखती है।
तो, क्या गलत हो सकता है?
मुझे यकीन है कि नहीं कर रहा हूँ अगर यह आपकी समस्या का कारण होता है, लेकिन मैं इस तथ्य है कि 'बैकबोन के साथ पहले मुसीबत पड़ा है .Model.save() 'वास्तव में आपको अपने बचत डेटा को पहले तर्क के रूप में रखने की आवश्यकता है, जैसे: 'model.save (model.toJSON(), {success सफलता: function() {}, त्रुटि: फ़ंक्शन() {}); मैंने अतीत में इसके साथ मुद्दों में भाग लिया है जहां मुझे अजीब त्रुटियां मिलीं क्योंकि मैं भूल गया था कि आपको उस डेटा में स्पष्ट रूप से पास करना होगा जिसे आप सहेजना/पोस्ट करना चाहते हैं। यह कोशिश करो। – brettjonesdev
आपके समय के लिए धन्यवाद। लेकिन यह मदद नहीं की। अब, जब मैं प्रतिक्रिया देता हूं तो फायरबग में यह मिलता है: TypeError: एक अपरिभाषित ... फ़ंक्शन द्वि (ए, बी, डी) {var e = b.dir, f = d && b.dir === "parentNode", g = u ++; ... – trishulpani