2011-12-01 18 views
9

मैं जेएसटी डेटा को जेएसटीआर पास करने के लिए एमवीसी का उपयोग कर रहा हूं और सूचना का पदानुक्रमित दृश्य दिखाता हूं। सबकुछ ठीक काम कर रहा है, हालांकि, ऐसे समय होते हैं जब उपयोगकर्ता डेटा तक पहुंच नहीं लेता है या किसी कारण से एमवीसी एक्शन अपवाद फेंकता है:jQuery जेएसटी और जेएसओएन त्रुटि हैंडलिंग

इन मामलों में, कार्रवाई एक JSON त्रुटि संदेश और सेट पास करती है HttpStatusCode से NotAccepted या InternalServerError

हालांकि जेएसटी के पापी कताई रखता है और मुझे इसे रोकने और त्रुटि संदेश दिखाने का कोई तरीका नहीं दिख रहा है।

क्या किसी ने इस मुद्दे को हल किया है? JsTree की JSON डेटा प्लगइन का उपयोग करते समय कोई त्रुटि प्रबंधन कैसे कर सकता है?

अद्यतन:

मैं पता लगा कि कैसे त्रुटि कब्जा करने के लिए:

$("#jstree1").jstree({ 
     "json_data": { 
      "ajax": { 
       "url": serviceUrl, 
       "data": function (n) { 
         return { pid: n.attr ? n.attr("id") : "" }; 
       }, 
       "error": function (x, s, r) { var err = $.parseJSON(x.responseText); if (err!="") { alert(err); } } 
      } 
    } 

यह JsTree MVC http statusCode और त्रुटि मिलती है कि लगता है, अब मैं कैसे करने के लिए यह पता लगाने की जरूरत है प्रतीक्षा करने और स्पिनर छवि को हटाने के लिए जेएसटी को बताएं!

मैं जेएसटी में त्रुटि दिखाने का एक अच्छा तरीका भी ढूंढ रहा हूं, या क्या मुझे इसके बाहर त्रुटि संदेश का प्रबंधन करना चाहिए?

+0

आगे खोज, यह त्रुटि कब्जा करने के लिए संभव है। – sam360

+0

मुझे इस के जवाब की आवश्यकता है :) –

उत्तर

0

शायद आपको इस त्रुटि को .jstree के ऊपर एक परत को संभालने में देखना चाहिए। शायद खिड़की को संभालने से। आतंक घटना आप इसे प्राप्त कर सकते हैं। यहां आप एक ऐसा फ़ंक्शन कॉल कर सकते हैं जो पेड़ या कुछ पुनर्निर्माण करेगा? इस पृष्ठ को अपने पृष्ठ में पहले के रूप में शामिल करना सुनिश्चित करें।

<script type="text/javascript"> 
window.onerror = function(x, s, r){ 
    alert('An error has occurred!') 
} 
</script> 
4

मैंने इस समस्या को हल किया है।

बस एक ajax कॉल त्रुटियों से निपटने है गलत, कृपया नीचे एक पूरी उदाहरण देखने के लिए ऊपर दिए गए कोड उदाहरण नोट-:

 $('#YourTree').jstree({ 
     "json_data": { 
      "ajax": { 
       "url": "/Controller/Action", 
       "data": function() { 
        return { Parameter1: "Value1", Parameter2: "Value2" } 
       }, 
       "type": "POST", 
       "dataType": "json", 
       "error": function (jqXHR, textStatus, errorThrown) { $('#YourTree').html("<h3>There was an error while loading data for this tree</h3><p>" + jqXHR.responseText + "</p>"); } 
      } 
     } 
    }); 

और वास्तविक कार्रवाई में, आप करने के लिए http प्रतिसाद स्थिति कोड निर्धारित करने की आवश्यकता 1 और त्रुटि लिखें। जैसे

Response.StatusCode = 1 
Response.Write("Error you want to go into jqXHR.responseText here"); 

का आनंद लें :)

+0

बस जो मैं खोज रहा था। धन्यवाद! –

+0

मैंने पाया कि पूरे पेड़ के लिए सामग्री को ओवरराइट करना पेड़ को भविष्य में ताज़ा करने में काम करने से रोकता है। इसके बजाय, मैं त्रुटि संदेश प्रदर्शित करने के लिए पेड़ के भीतर सामग्री को ट्विक करता हूं और लोडिंग टेक्स्ट को हटा देता हूं, जो बाद में रीफ्रेश में सही ढंग से बदलता है: '$ ('# YourTree .jstree-loading')। RemoveClass ('jstree-loading')। ढूँढें ('। jstree-anchor')। html ('त्रुटि:' + jqXHR.responseText); ' –

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