2012-03-13 16 views
5

मुझे लॉगिन फॉर्म दिखाने के लिए Ext.data.Connection को ओवरराइड करने की आवश्यकता है। मैं इस समय Ext.application.launch में ऐसा करता हूं जो अपेक्षा के अनुसार काम करता है।Ext.data ओवरराइड करें। कनेक्शन - सर्वोत्तम अभ्यास

क्या कोड के इस टुकड़े को एक अतिरिक्त फ़ाइल में कहीं अलग करना संभव है?

+0

आप लॉगिन फॉर्म को दिखाने के लिए कनेक्शन को ओवरराइड क्यों करना चाहते हैं? लॉगिन फॉर्म के साथ उपयोगकर्ता को प्रस्तुत करने के लिए यदि वह प्रमाणित नहीं है? – sha

+0

बिल्कुल। और यदि सत्र का समय भी समाप्त हो जाता है। –

+0

मैंने अजाक्स त्रुटियों के लिए वैश्विक हैंडलर जोड़ा और वहां गैर-प्रमाणीकृत त्रुटियों का विश्लेषण किया। शायद यह ऐसा कुछ है जो आपको भी अनुकूल करेगा। – sha

उत्तर

6

यदि आपको केवल यह पहचानने की आवश्यकता है कि उपयोगकर्ता प्रमाणीकृत नहीं है तो आप कुछ और करने पर विचार करना चाहेंगे।

function addAjaxErrorHandler(object) { 

    Ext.Ajax.on('requestexception', function(conn, response, options, e) { 

     var statusCode = response.status, 
     errorText = null, 
     captionText = response.statusText; 

     // 404 - file or method not found - special case 
     if (statusCode == 404) { 
      Ext.MessageBox.alert('Error 404', 'URL ' + response.request.options.url + ' not found'); 
      return; 
     } 

     if (response.responseText != undefined) { 
      var r = Ext.decode(response.responseText, true); 

      if (r != null) { 

       // 401 - not authenticated. For some reason we don't have authentication cookie anymore 
       if (r.ErrorCode == 401) { 
        Ext.MessageBox.alert('Error', 'You must log in to use application', 
         function() { 
// do something when user is not authenticated 
         object); 
        return; 
       } 

       errorText = r.ErrorMessage; 
      } 

      if (errorText == null) 
       errorText = response.responseText; 
     } 

     if (!captionText) 
      captionText = 'Error ' + statusCode; 

     Ext.MessageBox.alert(captionText, errorText); 
    }, 
    object);   
} 

तो बस अपने application.launch() फ़ंक्शन से इस फ़ंक्शन को कॉल करें और अगर परिभाषित तो गुंजाइश आवेदन वस्तु पारित: अजाक्स सिंगलटन करने के लिए कोई हैंडलर जोड़ने की तरह।

+0

आपको बहुत बहुत धन्यवाद, यह वही नहीं है जो मुझे चाहिए, लेकिन यह मुझे सही दिशा में इंगित करता है। :) –

+0

मदद करने में खुशी :) – sha

+0

ऐसा लगता है कि अगर आप दूसरों में AJAX अनुरोध कॉल में विफलता हैंडलर हैं तो इसे निष्पादित नहीं किया जाएगा। – jujule

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

  • कोई संबंधित समस्या नहीं^_^