2011-06-03 15 views
13

मैं EXT JS में सिंक्रोनस AJAX अनुरोध कैसे कर सकता हूं?EXT जेएस सिंक्रोनस AJAX अनुरोध

उदाहरण के लिए, इस कोड को दिए गए:

test1(); 
ajaxRequest(); //Ajax Request 
test2(); 

test2 समारोह भी ajaxRequest() के निष्पादन, जो एक Ext.Ajax.request कॉल है समाप्त किए बिना निष्पादित किया जाता है।

मैं text2() कैसे बना सकता हूं ajaxRequest() फ़ंक्शन निष्पादित करने के बाद ही निष्पादित किया जा सकता है?

मैं समझता हूं कि ऐसा करने का एक तरीका कॉलबैक में test2 फ़ंक्शन को कॉल करना है, लेकिन मेरे पास कुछ निर्भरताएं हैं और बहुत सारे कोड को अजाक्स अनुरोध के बाद एक समकालिक तरीके से निष्पादित किया जाना है। क्या आप कृपया सर्वोत्तम समाधान के साथ मेरी मदद कर सकते हैं?

उत्तर

24

मैं कुछ इसी तरह की जरूरत के साथ और Ext.Ajax.request() और Ext.data.Connection के स्रोत कोड देखने के बाद काम नहीं करता है, मैंने पाया कि वे एक async विशेषता के लिए जाँच, पर request() विधि है, इसलिए, यह वास्तव में संभव है इस तरह एक तुल्यकालिक अनुरोध करने के लिए, है:

var response = Ext.Ajax.request({ 
    async: false, 
    url: 'service/url' 
}); 
var items = Ext.decode(response.responseText); 

ऐसा लगता है इस async विशेषता दर्ज नहीं किया है, इसलिए ... ज़ाहिर है ... कि बारे में पता होना यह भविष्य की रिलीज में बदल सकता है।

+2

देखें एसिंक विशेषता अब 5.0 रिलीज़ में Ext.Ajax.request के लिए प्रलेखित है। 3.4 के लिए docs.sencha.com/extjs/5.0/apidocs/#!/api/Ext.Ajax – dansalmo

+0

देखें I ascc का उपयोग नहीं किया गया है –

5

ExtJS बॉक्स से सिंक्रोनस अनुरोध क्षमताओं को प्रदान नहीं करता है। वास्तव में, वे दृढ़ता से उनका उपयोग करके हतोत्साहित करते हैं।

आपको following चर्चा सहायक मिल सकती है।

+1

यह 2007 की एक चर्चा है। – Meredith

+1

एसिंक विशेषता 5.0 रिलीज में Ext.Ajax.request के लिए प्रलेखित है। Http://docs.sencha.com/extjs/5.0/apidocs/#!/api/Ext.Ajax – dansalmo

11

Extjs.Ajax में कॉलबैक कार्यों के तीन प्रकार में से एक में प्रत्येक AJAX कॉल परिणाम:

  • success अगर AJAX कॉल सफलतापूर्वक बनाई गई है चलाता है कि और एक प्रतिक्रिया
  • failure अगर AJAX कॉल के विफल होने चलाता है कि हो जाता है एक प्रतिक्रिया
  • callback उसके बाद AJAX कॉल एक प्रतिक्रिया मिलती है चलाता है पाने के लिए

आप test2(); निष्पादित करने के लिए अपने ajax अनुरोध खत्म करने के बाद,
तो एक success, failure, या callback समारोह के अंदर अपने test2 समारोह डाल चाहते हैं; जो भी आप चुनते हैं वह आपके ऊपर है ...

success या failure फ़ंक्शन पर अधिक जानकारी here मिल सकती है।

test1(); 
Ext.Ajax.request({ 
    url: 'page.php', 
    params: { 
     id: 1 
    }, 
    // scope: this, // you can set the scope too 
    callback: function(opt,success,respon){ 
     test2(); 
    } 
}); 

नोट: इस विधि ExtJS 3.

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