2012-06-21 5 views
16

मार मैं अपने JSP पेज में इस jQuery कोड है (jQuery 1.7.2) बनाता है। इसलिए जैसा:IE9 ajax कॉल सही ढंग से केवल ofter F12

$("#log-window").ajaxSend(function (event, jqXhr, ajaxOptions) { 
    console.log("handling an ajax request adding username and password to the header"); 
    jqXhr.setRequestHeader('username', $.cookie('username')); 
    jqXhr.setRequestHeader('password', $.cookie('password')); 
    }); 
    $("#log-window").ajaxError(function (errorThrown, xhr, failedReq, textStatus) { 
    alert("error in "+failedReq.url); 
    if (textStatus == 'timeout') { 
     if (!failedReq.tryCount) { 
      failedReq.tryCount = 1; 
      failedReq.retryLimit = 3; 
     } 
     if (failedReq.tryCount++ <= failedReq.retryLimit) { 
      //try again 
      $.ajax(failedReq); 
      return; 
     } 
     throw 'Es wurde ' + failedReq.retryLimit + ' Mal versucht. Die Verbindung scheint nicht zu funktionieren.'; 
     return; 
    } 
    if (xhr.status == 500) { 
     if ($.cookie('pageRefreshed') == null) { 
      $.cookie('pageRefreshed', 'true', { expires:10000 }); 
      location.reload(); 
     } 
     throw 'Der Server hatte ein Problem. Bitte melden Sie den Fehler and den Systemadministrator'; 
    } else if (xhr.status == 401) { 
     if (failedReq.url != "${pageContext.request.contextPath}/services/login") { 
      var loginData = { 
       username:$.cookie('username'), 
       password:$.cookie('password') 
      }; 
      loginAttempt(failedReq, loginData); 
     } 
    } else { 
     throw 'Oops! There was a problem, sorry.'; 
    } 
    }); 

पूरे पृष्ठ http://alpha.sertal.ch:8181/VisionWeb/data-details/#data:12300923

तहत पहुँचा जा सकता है आप भी प्रवेश कर सकते हैं यदि आप चाहें। उपयोगकर्ता: alsoft03 पासवर्ड: पासवर्ड

जब AJAX कॉल पहली बार बनाया जाता है तो क्या होना चाहिए, 401 त्रुटि है क्योंकि उपयोगकर्ता लॉग इन नहीं है। और यह वह जगह है जहां IE विफल रहता है। ajaxSend श्रोता कहा जाता है लेकिन ajaxError नहीं है। अगर मैं $ .ajax पर एक त्रुटि कॉलबैक सेट करता हूं तो इसे या तो नहीं कहा जाता है।

जब मैं एक वास्तविक ब्राउज़र (एफएफ, क्रोम, ओपेरा) के साथ पृष्ठ खोलता हूं तो यह ठीक काम करता है और पासवर्ड मांगता है। आईई तब तक नहीं करता जब तक आप एफ 12 दबाते हैं, इस स्थिति में साइट भी अपेक्षित काम करती है।

यह वास्तव में अजीब है। आप पृष्ठ को कंसोल के साथ खोलते हैं और यह काम करता है। कंसोल बंद होने के साथ ही यह केवल खाली हेडर दिखाता है। एक बार पृष्ठ लोड हो जाने के बाद, आप कंसोल बंद कर सकते हैं और यह लोड करना जारी रहेगा।

मैंने विभिन्न मशीनों पर इसका परीक्षण किया और एक ही परिणाम मिला।

यह मुझे पागल बनाता है। मैं डीबग नहीं कर सकता क्योंकि अगर मैं एफ 12 के साथ डीबगर खोलता हूं, तो यह ठीक काम करता है।

मुझे पता है कि AJAX कॉलबैक नहीं बनाया गया है क्योंकि मैंने alert("I got so far") लाइनों को विभिन्न स्थितियों पर रखा है।

अगर किसी के पास कोई सुराग है, तो यह बहुत स्वागत है।

उत्तर

50

console.log() के सभी उदाहरणों को आईई 9 में काम करने के लिए डेवलपर मोड में काम करने के लिए आपकी स्क्रिप्ट से हटा दिया जाना चाहिए।

अद्यतन मुझे खुशी है कि इस उत्तर ने कुछ लोगों की मदद की है। बस मैं एक सरल समाधान मैं HTML5 Boilerplate से उपयोग कर रहा है के साथ इस जवाब को अद्यतन करता हूँ सोचा: अपने कोड से पहले

// Avoid `console` errors in browsers that lack a console. 
(function() { 
    var method; 
    var noop = function() {}; 
    var methods = [ 
     'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error', 
     'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log', 
     'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd', 
     'timeStamp', 'trace', 'warn' 
    ]; 
    var length = methods.length; 
    var console = (window.console = window.console || {}); 

    while (length--) { 
     method = methods[length]; 

     // Only stub undefined methods. 
     if (!console[method]) { 
      console[method] = noop; 
     } 
    } 
}()); 

इस प्लेस और आपकी मदद करेगा ब्राउज़रों कि एक सांत्वना की कमी में किसी भी सांत्वना त्रुटियों से बचने के।

+0

अगर हल करने के लिए यह कंसोल के बिना चलता है यह एक त्रुटि फेंकता है क्योंकि, ठीक है, कोई कंसोल लोड नहीं है _। नियमित ब्राउज़िंग के लिए क्यों लोड करें? ज्यादातर लोग देव नहीं हैं। – TheZ

+3

मैंने कभी इसके बारे में सोचा नहीं होगा !! वास्तव में, उनमें से कितना बेवकूफ है। मुझे लगता है कि कोई इसके बारे में बहस कर सकता है, लेकिन मैंने इस शर्ट पर सिर्फ एक दिन खो दिया। एक बात निश्चित रूप से है, मैं इसे भूल नहीं सकता :-) –

+0

खुशी है कि मैं मदद कर सकता हूं! = डी – eivers88

2

console.log IE में डेवलपर मोड के बाहर अपरिभाषित है। मैं सिर्फ एक चर

var console = {log: function(){}}; 

जब मैं डिबगिंग नहीं कर रहा हूँ के लिए करना चाहते।

+0

यह बहुत दोस्ताना नहीं है, हर बार उस लाइन को संपादित करना होगा। 'If ​​(! Window.console) console = {log: function() {}, जानकारी: फ़ंक्शन() {}, चेतावनी; फ़ंक्शन() {}, त्रुटि: फ़ंक्शन() {}} 'आप अपना लिख ​​सकते हैं अपने कार्यान्वयन को पृष्ठ –

+0

@JuanMendes पर कहीं भी आउटपुट करता है, हालांकि यह उत्पादन कोड होने पर कंसोल को प्रदूषित नहीं करेगा। – matt3141

+0

अन्य सभी ब्राउज़रों में पहले से ही एक वैश्विक कंसोल है, यह अधिक प्रदूषण नहीं है। जब आप उन्हें वहां भूल जाते हैं तो अपने कोड को तोड़ने से रोकता है। –

1

मुझे यह समस्या थी और मेरे पास सभी कंसोल संदर्भ स्क्रिप्ट में टिप्पणी की गई थी, लेकिन यह अभी भी आईई में केवल असफल रहा था (11)। मैंने पाया कि समाधान मेरे AJAX कॉल को झूठा जोड़ना था।

$.ajax({ 
     **cache: false,** 
     type : 'GET',}) 

मेरे सभी आदानों विशेषता स्वत: पूर्ण = "बंद"

0

वास्तव में इसे IE 11 में अपने समय, बचाया, हम कैश रखना चाहिए है: प्राप्त ajax के लिए झूठी इस मुद्दे

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