दिलचस्प पोस्ट
OracleParameter और इन खंड में लगातार जावा एफएफ़ कार्यकर्ता थ्रेड में UI अपडेट करें एक यूआरएल से विंडोज बैच फ़ाइल फाइल डाउनलोड करें विंडो में तत्व की पूर्ण स्थिति प्राप्त करें GoogleService प्रारंभ करने में विफल जावास्क्रिप्ट ऑब्जेक्ट को जेसन स्ट्रिंग के लिए एन्कोडिंग करना पायथन में फ़ंक्शन चेनिंग Html5 इनपुट प्रकार नंबर के साथ फ़्लोट्स और दशमलव विभाजक कैसे प्रबंधित करें क्यों और कब मुझे स्पार्सी कॉलम का उपयोग करना चाहिए? (एसक्यूएल सर्वर 2008) IPhone के लिए UIPopoverController काम नहीं कर रहा है? स्थानीय स्टोरेज के आकार को कैसे खोजें ईएफ कोड पहले "अमान्य स्तंभ नाम 'भेदभावक'" लेकिन कोई विरासत नहीं मैं C ++ कंटेनर में भिन्न प्रकार के ऑब्जेक्ट कैसे स्टोर कर सकता हूं? पायथन में कोशिश-छोड़कर-दूसरे का उपयोग करने के लिए क्या यह एक अच्छा अभ्यास है? SQLite डेटाबेस डिफ़ॉल्ट समय मान 'अब'

मेरी स्पिनर जीआईएफ स्टॉप करते हैं, जबकि jQuery के एजेक्स कॉल चल रहा है?

मैं बस अपने आप को एएसपी.नेट अपडेट पैनल्स से छुड़ाना शुरू कर रहा हूं। मैं एक वेब सेवा के परिणामों को ग्रिड में बाध्य करने के लिए jQuery और जेटेम्प्लेट का उपयोग कर रहा हूं, और सबकुछ ठीक काम करता है

यहाँ बात है: मैं टेबल स्पिनर जीआईएफ दिखाने की कोशिश कर रहा हूं, जबकि टेबल रिफ्रेश किया जा रहा है (एएसपी.नेट में अपडेट एडप्रेशन) मुझे यह सब काम मिल गया है, सिवाय इसके कि स्पिनर जमे हुए है। क्या हो रहा है यह देखने के लिए, मैंने स्पिनर को अपडेट प्रोविजन डिवेल से बाहर ले जाने की कोशिश की और पेज पर मैं इसे पूरे समय देख सकूं। यह फिर से शुरू होने तक स्पिन और स्पिन करता है, और ताज़ा होने तक तक जमे हुए रहता है, और फिर फिर से कताई शुरू होता है। वास्तव में आप 'कृपया प्रतीक्षा करें' स्पिनर से क्या चाहते हैं!

यह IE7 में है – अभी तक अन्य ब्राउज़रों में परीक्षण करने का मौका नहीं मिला है। कोई विचार? क्या अजाक्स कॉल या क्लाइंट-साइड डाटाबेसिंग इतनी संसाधन-सघन है कि ब्राउज़र अपने एनिमेटेड जीआईएफ को पेश करने में असमर्थ है?

अद्यतन करें

ग्रिड को रिफ्रेश करने वाला कोड यहाँ है। निश्चित नहीं है कि यह तुल्यकालिक या अतुल्यकालिक है

updateConcessions = function(e) { $.ajax({ type: "POST", url: "Concessions.aspx/GetConcessions", data: "{'Countries':'ga'}", contentType: "application/json; charset=utf-8", dataType: "json", success: function(msg) { applyTemplate(msg); }, error: function(XMLHttpRequest, textStatus, errorThrown) { } }); } applyTemplate = function(msg) { $('div#TemplateTarget').setTemplate($('div#TemplateSource').html()); $('div#TemplateTarget').processTemplate(msg); } 

अपडेट 2

मैंने सिर्फ jQuery के दस्तावेजों की जांच की और $.ajax() विधि डिफ़ॉल्ट रूप से अतुल्यकालिक है। बस किक के लिए मैंने यह जोड़ा

 $.ajax({ async: true, ... 

और इससे कोई फर्क नहीं पड़ा।

Solutions Collecting From Web of "मेरी स्पिनर जीआईएफ स्टॉप करते हैं, जबकि jQuery के एजेक्स कॉल चल रहा है?"

यह अजाक्स कॉल नहीं है जो कि ब्राउज़र को फ्रीज कर रहा है। यह सफलता हैंडलर (आवेदन करेंटेम्पलेट) है एचटीएमएल को एक दस्तावेज में सम्मिलित करना जैसे कि आईई को फ्रीज कर सकता है, इस पर निर्भर करता है कि एचटीएमएल कितना है। ऐसा इसलिए है क्योंकि आईई UI एकल थ्रेडेड है; यदि आप नोटिस करते हैं, तो यह हो रहा है, जबकि वास्तविक आईई मेनू भी जमी हैं।

एक परीक्षण के रूप में, कोशिश करें:

 applyTemplate = function(msg) { return; } 

मुझे यह याद नहीं है कि इसके कारण क्या हुआ, लेकिन हमारे पास व्यस्त बॉक्स में आईई 6 के साथ एक समान समस्या थी और हमने इसे जावास्क्रिप्ट में इस अविश्वसनीय हैक के साथ तय किया है:

 setTimeout("document.images['BusyImage'].src=document.images['BusyImage'].src",10); 

यह सिर्फ छवि स्रोत को पहले से ही सेट करता है, लेकिन यह स्पष्ट रूप से आईएसई को अपनी मलिनता से बाहर खींचने के लिए पर्याप्त है।

संपादित करें: मुझे लगता है मुझे याद है कि यह क्या कारण था: हम एनीमेशन को एक डिवेल में लोड कर रहे थे: कोई नहीं IE यह लोड करता है और एनीमेशन शुरू नहीं करता है, क्योंकि यह छिपा हुआ है दुर्भाग्य से यह एनीमेशन शुरू नहीं करता है जब आप प्रदर्शित करने के लिए युक्त ब्लॉक को सेट करते हैं: ब्लॉक, इसलिए हमने आईई को फिर से लोड करने के लिए कोड की उपरोक्त रेखा का इस्तेमाल किया।

छवि जमा होती है क्योंकि यह छुपा हुआ है, क्योंकि एनीमेशन IE द्वारा अक्षम है।

इसे ठीक करने के लिए, उसे छोड़ने के बजाय लोड हो रहा चित्र जोड़ें:

 function showLoader(callback){ $('#wherever').append( '<img class="waiting" src="/path/to/gif.gif" />' ); callback(); } function finishForm(){ var passed = formValidate(document.forms.clientSupportReq); if(passed) { $('input#subm') .val('Uploading...') .attr('disabled','disabled'); $('input#res').hide(); } return passed; } $(function(){ // on submit $('form#formid').submit(function(){ var l = showLoader( function(){ finishForm() }); if(!l){ $('.waiting').remove(); } return l; }); }); 

क्या आप वाकई एजेएक्स कॉल के दौरान जीआईएफ कताई नहीं कर रहे हैं?

आपकी रियायतें में.एस्पीएक्स इस रेखा को कहीं भी GetConcessions के निपटान में रखें: –

 System.Threading.Thread.Sleep(5000); 

मुझे संदेह है कि 5 सेकंड के लिए जीआईएफ स्पिन करता है, तो IE renders और परिणाम पेंट करता है।

मुझे पता है कि सवाल अतुल्यकालिक अजाक्स कॉल के बारे में था। हालांकि मैं जोड़ना चाहता था कि मुझे सिंक्रोनस एजेक्स कॉल्स के बारे में अपने परीक्षण में निम्नलिखित मिले हैं:

सिंक्रोनस अजाक्स कॉल्स के लिए जबकि कॉल प्रगति पर है (यानी सर्वर का जवाब देने की प्रतीक्षा करना) परीक्षण के लिए मैं सर्वर पर सर्वर प्रतिक्रिया में देरी डाल दिया।

फ़ायरफ़ॉक्स 17.0.1 – एनिमेटेड जीआईएफ ठीक से चेतन करने के लिए जारी है।

क्रोम v23 – एनिमेटेड जीआईएफ एनीमेशन रोकता है जब अनुरोध प्रगति पर है

ठीक है, यह कई कारणों से है सबसे पहले, जब एजेक्स सर्वर पर वापस कॉल करता है, तो आप अपने जीआईएफ जमे हुए कुछ मिलिसेकेंड को समझेंगे, लेकिन कई प्रासंगिक नहीं। आपके द्वारा जानकारी की प्रक्रिया शुरू करने के बाद, और उन ऑब्जेक्टों के आधार पर जो आप हेरफेर करते हैं और आप इसे कैसे करते हैं, आपके जीईफ़ जमे हुए होने पर आपको अधिक समय लगेगा। इसका कारण यह है कि थ्रेड प्रक्रिया संसाधन व्यस्त है। उदाहरण अगर आपके पास 1000 ऑब्जेक्ट हैं और आप एक ऑर्डर करते हैं, सूचना लेते हैं, और आप jquery का उपयोग करते हैं और जोड़ते हैं, डालें, $ .ईई कमांड, आप जीआईएफ जमे हुए महसूस करेंगे। कभी-कभी यह जरूरी है कि सभी जमे हुए गिफ्स से बचें, लेकिन यू कुछ ही समय में कुछ मिलिसेकेंड को सीमित कर सकता है: प्रतिक्रिया की एक सूची बनाओ AJAX, और इसे प्रत्येक 2 सेकंड पर संसाधित करें (इस के साथ आपको एक अकेले सरणी में परिणाम होंगे और आप इसे एक सेट इन्टरलेबल के साथ बुलाएं और आप कोशिश की प्रक्रिया की बोतल गर्दन से बचें, जब एक प्रतिक्रिया पहले ही प्रसंस्करण हो रही है)। अगर आप JQuery का उपयोग करते हैं तो $ $ का उपयोग न करें। डोम हेरफेर (एपेंड, डालें, इत्यादि) का उपयोग न करें, एचटीएमएल () का उपयोग करें फिर से शुरू में कम कोड, रिफ़ाक्टर, और सभी प्रतिक्रिया proccess (यदि आप 1 के अधिक किया है) केवल 1 की तरह। मेरे अंग्रेजी के लिए क्षमा करें।

मुझे ब्राउजर फ्रीज़िंग के साथ एक ऐसी ही समस्या थी यदि आप स्थानीय रूप से विकसित और परीक्षण कर रहे हैं, तो किसी कारण से यह वेब ब्राउज़र को जमा देता है। एक वेब सर्वर पर अपना कोड अपलोड करने के बाद उसने काम करना शुरू कर दिया। मुझे उम्मीद है कि यह मदद करता है, क्योंकि यह मुझे खुद के लिए यह पता लगाने में कुछ समय लगा।

क्या आप एक तुल्यकालिक कॉल या अतुल्यकालिक कॉल कर रहे हैं? सिंक्रोनस कॉल्स को कॉल करने की अवधि के लिए ब्राउज़र को प्रतीत होता है। दूसरी संभावना यह है कि यह जो भी काम कर रहा है वह सिस्टम बहुत व्यस्त है।

मैंने अजाक्स में इस व्यवहार को देखा है जब AJAX कॉल करते हैं मेरा मानना ​​है कि यह इस तथ्य से संबंधित है कि ब्राउज़र केवल एक ही थ्रेडेड हैं, इसलिए जब AJAX कॉल लौटा जाता है, तो कॉल पर काम हो रहा है, इसलिए परिणामी रूप से एनिमेटेड जीआईएफ़ को क्षणभर रोकना होगा।

डेन्निस्मोन्सिविक का उत्तर गुनगुना है Spin.js का उपयोग करें और साइट http://fgnass.github.com/spin.js/ उस चरण को दिखाती है जो काफी आसान है। भारी प्रक्रिया के तहत हमें सीएसएस एनिमेशन का उपयोग करना चाहिए। कोई जेएस संचालित एनीमेशन और जीआईएफ का प्रयोग एक थ्रेड सीमा के बीक्यूसीय इस्तेमाल नहीं किया जाना चाहिए अन्यथा एनीमेशन स्थिर होगा। सीएसएस एनिमेशन UI थ्रेड से अलग हैं I

Setteimeout फ़ंक्शन में अजाक्स कॉल को लपेटने से मुझे जीआईएफ-एनीमेशन को ठंड रोकने में मदद मिली I

 setTimeout(function() { $.get('/some_link', function (response) { // some actions }); }, 0); 
  1. ब्राउज़र एकल थ्रेडेड और मल्टीथ्रेडेड हैं किसी भी ब्राउज़र के लिए:
  2. जब आपको फ़ंक्शन बुलाया जाता है, तो एक नेस्टेड अजाक्स फ़ंक्शन होता है, // कोड यहां java / servlet / jsp put code थ्रेड। नींद (5000); एजेक्स में async को समझने के लिए servlet में जब सही है या गलत

     function ajaxFn(){ $('#status').html('WAIT... <img id="theImg" src="page-loader.gif" alt="preload" width="30" height="30"/>'); $('#status').css("color","red"); $.ajax({ url:"MyServlet", method: "POST", data: { name: $("textarea").val(), id : $("input[type=text]").val() }, //async: false, success:function(response){ //alert(response); //response is "welcome to.." $("#status").text(response); }, complete:function(x,y){ //alert(y) }, error:function(){ $("#status").text("?"); } }); $('#status').css("color","green"); 

    }

Async: एकल थ्रेडेड ब्राउज़र के लिए सही ताकि डोमेन तुरंत लोड हो जाएगा और सफलता के भीतर लक्ष्य डोम को मत डालें, क्योंकि सफलता की प्रतिक्रिया प्रतिक्रिया तक प्रतीक्षा करें। तो उस समय तक आपके डोम को लोड नहीं मिलेगा।