2013-08-15 10 views
11

ट्रिगर नहीं करने के लिए सफलता/त्रुटि/पूर्ण कॉलबैक का कारण बनता है यदि मैं पैरामीटर डालता हूं, तो मुझे कोई सफलता/त्रुटि/पूर्ण कॉलबैक नहीं मिलता है, लेकिन फिडलर 200 प्रतिक्रिया दिखाता है और मेरा अनुरोध किया गया जेसन डेटा वहां है । यह कुंजी है। फिडलर दिखा रहा है कि राउंड ट्रिप एक सफलता थी और अनुरोधित डेटा क्लाइंट साइड और अच्छे क्रम में है। समस्या रीढ़ की हड्डी की सफलता/विफलता/पूर्ण नहीं कहा जाता है। बस एक बड़ा कुछ नहीं मिलता है।Backbone.js मॉडल fetch: पैरामीटर

सटीक उसी बेस यूआरएल के साथ, यदि मैं पैरामीटर निकालता हूं (और समानांतर में मेरी वेब सेवा से उन्हें हटा देता हूं), सफलता और पूर्ण दोनों ही ट्रिगर होते हैं। नीचे मेरे साथ "पैरामीटर" पैरामीटर है:

myModel.fetch({ 
    data: { 
     name: 'Bob', 
     userid: '1', 
     usertype: 'new' 
    } 
}, { 
    success: (function() { 
     alert(' Service request success: '); 
    }), 
    error: (function (e) { 
     alert(' Service request failure: ' + e); 
    }), 
    complete: (function (e) { 
     alert(' Service request completed '); 
    }) 
}); 

रीढ़ की हड्डी का व्यवहार अलग कैसे हो सकता है? यह वही यूआरएल है, सिर्फ पैरामीटर के साथ या बिना।

मुझे लगता है कि भेद का अनुमान है कि रीढ़ की हड्डी में हुड के नीचे, "साथ" पैरामीटर परिदृश्य एक पोस्ट है और "बिना" पैरामीटर एक साधारण मिलता है। आईई कंसोल इसे थोड़ा अलग आउटपुट के साथ दर्शाता है।

"के साथ" पैरामीटर मेरी IE ब्राउज़र कंसोल एक चेतावनी (नहीं एक त्रुटि लेकिन एक चेतावनी) की रिपोर्ट है कि अनुरोध आवश्यक CORS:

SEC7118: http://example.com/service/myservice.asmx/myoperation?name=Bob&userid=1&usertype=new आवश्यक क्रॉस उत्पत्ति रिसोर्स शेयरिंग (CORS) के लिए XMLHttpRequest।

मुझे लगता है कि यह सिर्फ मुझे बता रहा है "अरे, आपने क्रॉस मूल अनुरोध किया है और मैंने इसे छोड़ दिया"। पैरामीटर के बिना "मुझे चेतावनी नहीं मिलती है। -नियंत्रण-अनुमति दें-उत्पत्ति पहुँच

:: *

और प्रतिक्रियाओं वास्तव में उस नीति को दर्शाती में वापस लौटते हैं मैं सेवा हेडर करने के लिए सेट है।

तो प्रश्न यह है कि रीढ़ की हड्डी की सफलता/त्रुटि/पूर्ण कॉलबैक पैरामीटर के साथ "ट्रिगर" क्यों नहीं करते हैं? डेटा इसे वापस बनाता है। सफलता को प्रतिबिंबित नहीं करना चाहिए?

+0

'fetch' एक भी तर्क लेता है। [यह] पढ़ें (http://backbonejs.org/docs/backbone.html#section-55)। – fbynite

उत्तर

14

अपने success, error, और complete उसी ऑब्जेक्ट में विधियों को रखें जो आपके पास data है। केवल एक ही वस्तु होनी चाहिए। हुड के तहत बैकबोन बस jQuery's ajax() method का उपयोग करता है, इसलिए आप जिस ऑब्जेक्ट को fetch() पर पास करते हैं, वह किसी भी प्रॉपर्टी का उपयोग कर सकती है जिसे $.ajax() पर पास की गई सेटिंग ऑब्जेक्ट में शामिल किया जा सकता है।

myModel.fetch({ 
    data: { 
     name: 'Bob', 
     userid: '1', 
     usertype: 'new' 
    }, 
    success: (function() { 
     alert(' Service request success: '); 
    }), 
    error: (function (e) { 
     alert(' Service request failure: ' + e); 
    }), 
    complete: (function (e) { 
     alert(' Service request completed '); 
    }) 
}); 
+0

बिंगो। बहुत धन्यवाद। ऊपर संशोधित कोड। – Robert

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