2012-05-30 11 views
6

मेरे पास एक एमवीसी 3 ऐप है, और मुझे AJAX लोडिंग छवि जोड़ने की आवश्यकता है।लोडिंग एलेमेंट आईडी में अजाक्स। बेजिनफॉर्म लोडिंग छवि प्रदर्शित नहीं कर रहा है

<div id="div_loading" style="display:none;"> 
    <img src="@Url.Content("~/Content/Images/loading.gif")" alt="" /> 
</div> 

जब मैं अपने सबमिट बटन प्रपत्र वापस पोस्ट करने के लिए क्लिक करें, loading.gif कभी नहीं दिखाई देता है: मैं मेरे विचार

@using (Ajax.BeginForm(
     "LogOn","Account", 
     new AjaxOptions { LoadingElementId = "div_loading" })) 

यह मेरा एक ही दृश्य पर बहुत ही सरल div है पर इस डाल दिया। मेरा कोड ठीक चलाता है, लेकिन कोई लोडिंग सूचक दिखाई नहीं देता है। और छवि सही ढंग से और सही जगह पर नामित है। क्या किसी के पास कोई सुराग है?

अद्यतन जाहिर है, इसका टेलीरिक अनुप्रयोगों के साथ कुछ करना है। अगर मैं एक नियमित एमवीसी 3 ऐप बनाता हूं, तो यह काम करता है। जब मैं एक टेलीरिक एमवीसी 3 ऐप बनाता हूं, तो यह काम नहीं करता है। क्या किसी और ने टेलीरिक के साथ इसका सामना किया है?

+0

क्या आपने इसे फायरबग के साथ डीबग करने का प्रयास किया है? क्या आपको अपने कंसोल में कोई त्रुटि मिलती है? –

उत्तर

6

मैं अपने द्वारा किए गए प्रत्येक AJAX कॉल में लोडिंग Iamge को जोड़ने से दूर शर्मना पसंद करता हूं।

Display spinner while waiting For ajax

यह कार्यक्षमता आप की जरूरत है:

शीर्ष जवाब यहाँ एक ajax स्पिनर (चित्र लोड) जब भी ajax एक भेजें कॉल करता है प्रदर्शित करने के लिए एक समाधान है। छवि के प्रदर्शन को AJAX कॉल में संलग्न करने के लिए बस जावास्क्रिप्ट का उपयोग करें। क्या करता है ajax भेजें पर div प्रदर्शित है और अपने पृष्ठ पर सभी कॉल के लिए ajax स्टॉप या त्रुटि होने पर यह खाल

<script type="text/javascript"> 
     $(document).ready(function() { 
      BindSpinner(); 
     }); 

     function BindSpinner() { 
      $("#div_loading").bind("ajaxSend", function() { 
       $(this).show(); 
      }).bind("ajaxStop", function() { 
       $(this).hide(); 
      }).bind("ajaxError", function() { 
       $(this).hide(); 
      }); 
     }; 
    </script> 

:

ऐसा लगता है कि कुछ किया जाना चाहिए। यदि आप इस स्क्रिप्ट और div को अपने _layout में रखते हैं तो यह आपकी साइट पर प्रत्येक अजाक्स कॉल के लिए ऐसा करेगा।

+0

जवाब देने के लिए धन्यवाद। मैंने इसे अपने _Layout.cshtml में जोड़ा और मुझे अभी भी लोडर नहीं दिखाई दिया। क्या AJAX एक विधि है जिसे मुझे बनाने की आवश्यकता है? – BoundForGlory

+0

स्पष्ट लगता है लेकिन क्या आपकी परियोजना में छवि लोड की गई है? यह सुनिश्चित करने के लिए कि वैकल्पिक रूप से div प्रदर्शित होता है, वैकल्पिक टेक्स्ट को सेट करने का प्रयास करें। ओह और सुनिश्चित करें कि आपका div _layout में भी है। – Totero

+0

हां, वहां है। अगर मैं शैली = "डिस्प्ले: कोई नहीं" हटाता हूं और रीफ्रेश करता हूं, तो gif दिखाता है। मेरा विश्वास करो, मैंने पहले उस पर देखा। – BoundForGlory

1

आप इसके बजाय इसे आजमा सकते हैं। मैं इतना here

<div id="div_loading" style="visibility:hidden;"> 
    <img src="@Url.Content("~/Content/Images/loading.gif")" alt="" /> 
</div> 
+0

मैंने कोशिश की कि मेरी उंगलियों को पार करने के साथ, यह काम नहीं करता है :(मैंने एक नमूना प्रोजेक्ट सेट किया है, और यह काम करता है। मैं इसे अपने मुख्य प्रोजेक्ट में ले जाता हूं और यह नहीं करता है। लेकिन यह इतना आसान लगता है। मैंने – BoundForGlory

+0

से पहले ऑब्जेक्ट छुपाया और प्रदर्शित किया आपकी लोडिंग gif को आपकी आउटपुट निर्देशिका में कॉपी नहीं किया जा रहा है?क्या बिल्ड एक्शन सामग्री पर सेट है और प्रतिलिपि बनाने के लिए प्रतिलिपि बनाई गई है प्रतिलिपि बनाने के लिए हमेशा कॉपी करें/कॉपी करें यदि नया? –

+0

कभी नहीं, बस टोटेरो के उत्तर –

14

सवाल आप से और साथ यह कोशिश कर सकते से समझ में आ गया: मैं एक ही मुद्दा था here

function AjaxBegin() 
{ 
    $('#div_loading').show(); 

} 
function AjaxComplete() 
{ 
    $("#div_loading").hide(); 
} 
function AjaxFailure(ajaxContext) 
{ 
    var response = ajaxContext.responseText; 
    alert("Error Code [" + ajaxContext.ErrorCode + "] " + response); 
} 


AjaxOptions: 

OnFailure = "AjaxFailure"; 
OnBegin = "AjaxBegin"; 
OnComplete = "AjaxComplete"; 
+0

मुझे लगता है कि ऑनबिन जाने का रास्ता हो सकता है, लेकिन यह मेरी विधि अजाक्सबीजिन को नहीं बुला रहा है। मैं इसे इतना नया अजाक्सऑप्शन की तरह करता हूं {ऑनबीजिन = "अजाक्सबीजिन()"} लौटें) – BoundForGlory

+0

अजाक्स ऑप्शन इवेंट्स या तो जावास्क्रिप्ट स्ट्रिंग या जावास्क्रिप्ट फ़ंक्शन नाम लेते हैं, ताकि जब तक आपका अजाक्सबिजिन फ़ंक्शन वैश्विक नामस्थान पर काम न करे तब तक काम करना चाहिए। यदि आप जाते हैं तो यह काम करता है: नया अजाक्स ऑप्शन {ऑनबिन = "अजाक्सबीजिन"} –

+0

@ user1202717 अरे, बस अनुवर्ती करना चाहते थे और देखें कि यह आपके लिए काम करता है या नहीं? –

0

और यह तत्व का नाम बदलने होने के लिए हल करने में सक्षम था छिपा/दिखाया गया है। मैंने ऊंट-केस प्रारूप का उपयोग किया: "myDivToBeHidden"

तत्व को "प्रदर्शन" संपत्ति को "none" पर सेट करने की आवश्यकता है।

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