2009-04-12 15 views
5

मेरा वर्तमान वेब ऐप प्रोजेक्ट AJAX कॉल का भारी उपयोग करता है। उनमें से ज्यादातर तेज़ हैं और लगभग तुरंत प्रतिक्रिया देते हैं। तो, हर समय AJAX लोडर दिखाना जरूरी नहीं है। लेकिन मैं AJAX लोडर दिखाना चाहता हूं जब AJAX कॉल 250ms (या तो) अधिक समय लेते हैं। अन्यथा उपयोगकर्ता भ्रमित हो सकते हैं और बार-बार लिंक पर क्लिक करना जारी रख सकते हैं। :)अजाक्स लोडिंग सूचक तुरंत दिखाएं लेकिन देरी के बाद

कोई विचार है कि jQuery का उपयोग करके इसे कैसे पूरा किया जाए?

setTimeout ("foo()", 250); 

जहां foo() फ़ंक्शन लोड हो रहा है के लिए जिम्मेदार है ... संकेत:

उत्तर

4

मैं लेकिन कुछ कोड के निष्पादन के लिए एक सरल देरी प्राप्त करने के लिए jQuery के साथ कोई पिछले अनुभव है, सिर्फ इस का उपयोग ।

+0

भी ध्यान रखें कि यह एक स्ट्रिंग के बजाय एक चर के रूप में उपयोग करने के लिए कुछ हद तक foo तेज है, क्योंकि अगर आप एक स्ट्रिंग का उपयोग, यह eval'ed प्राप्त करेंगे: setTimeout (foo, 250); – moff

+0

@moff मुझे वह सुझाव पसंद है, अभी तक कोशिश नहीं की गई है, लेकिन अब से –

2

क्या आप अपने 'लोडिंग ...' संदेश को प्रदर्शित करने के लिए 250ms के बाद ट्रिगर करने के लिए जावास्क्रिप्ट टाइमर का उपयोग कर सकते हैं?

इसे ajaxSend() पर सक्रिय करें, और इसे ajaxComplete() पर अक्षम करें (और 'लोडिंग ...' संदेश को रिकक्ड करें), और इसलिए कार्यान्वयन आपके द्वारा किए गए अजाक्स कॉल के लिए पारदर्शी होना चाहिए।

1
var activity = false; 
$("#loadingIndicator").ajaxStart(function() { 
    activity = true; 
    window.setTimeout(function() { 
     if (activity) { 
      //alert('activity'); 
      $("#loadingIndicator").show(); 
     } 
    } 
    , 700); 
}); 
$("#loadingIndicator").ajaxStop(function() { 
    activity = false; 
    $(this).hide(); 
}); 
संबंधित मुद्दे