2014-11-17 5 views
17

मुझे आईई (11) के साथ अजीब समस्या का सामना करना पड़ा है। मैं सरल jQuery कोड है:jQuery AJAX केवल आईई में काम करता है जब आईई डीबगर खुला रहता है

$("#my-radio").click(function() { 
    $.ajax({ 
     url: "/my-url", 
    }).error(function(jqXHR, textStatus, errorThrown) { 
     $("#error-summary").text(errorThrown); 
    }); 
}); 

बात यह है कि इस कोड (आईई 11 को छोड़कर मेरे मामले में, फिर भी पिछले संस्करणों में परीक्षण नहीं किया) आईई के अलावा सभी ब्राउज़रों में पूरी तरह से काम करता है लेकिन, जब मैं IE खोलने है क्या गलत है यह देखने के लिए जावास्क्रिप्ट डीबगर में बनाया गया - सब कुछ ठीक काम करता है। आईई नियंत्रक कार्रवाई के लिए AJAX कॉल बनाता है, नियंत्रक में ब्रेकपॉइंट हिट हो जाता है। कार्रवाई कुछ भी नहीं लौटाती है (यह void प्रकार है), बस कुछ सामान गिनती है। मैंने this thread में प्रदान किए गए प्लगइन समाधान की कोशिश की है लेकिन यह उपयोगी नहीं था।

अद्यतन:

मुद्दा मैं सरल MVC आवेदन here प्रकाशित किया है प्रदर्शित करने के लिए। आप छवि पर क्लिक करते हैं, ब्राउज़र इस कार्रवाई के लिए ajax अनुरोध करता है:

public string Hello() 
{ 
    string ip = Request.ServerVariables["REMOTE_ADDR"]; 
    string agent = Request.UserAgent;  

    var request = new Request 
    { 
      IP = ip, 
      Time = DateTime.UtcNow, 
      UserAgent = agent 
    }; 

    _requestsRepository.Add(request); 

    int byIp = _requestsRepository.GetTotalRequestsCountByUser(ip); 
    int total = _requestsRepository.TotalRequests; 

    string message = string.Format("Hello, {0}. This is your {1}th request and {2}th request in total.", ip, byIp, total); 

    return message; 
} 
इस jQuery कोड के साथ

:

$(document).ready(function() { 
    $("#click-me").click(function() { 
     $.ajax({ 
      url: "/services/hello", 
     }) 

     .success(function (data) { 
      alert(data); 
     }) 

     .error(function (jqXHR, textStatus, errorThrown) { 
      $("#error-summary").text(errorThrown); 
     }); 
    }); 
}); 

आप देख सकते हैं - कार्रवाई सरल स्ट्रिंग जो सफलता पर सतर्क कर दिया गया है देता है। आप आईई में इस पेज को आजमा सकते हैं। आप देखेंगे कि अनुरोधों की संख्या बढ़ती नहीं है, क्योंकि कोई अनुरोध वास्तव में भेजा गया है लेकिन अभी भी success ईवेंट हैंडलर को कॉल किया गया है और संदेश को सतर्क किया गया है (संभवतः कुछ संभावित अनुरोध के बाद यह शायद कुछ पुराना कैश संदेश है, मैं हूं निश्चित नहीं)। किसी भी अन्य ब्राउज़र में अनुरोधों की मात्रा बढ़ेगी, क्योंकि जब भी आप छवि पर क्लिक करते हैं तो उन्हें भेजा जाता है। यदि आप आईई डीबगर चालू करते हैं - अनुरोध भी भेजे जाएंगे। मेरा सुझाव है कि यह किसी प्रकार का आईई कैश संबंधित मुद्दा है।

+0

क्या यह एकमात्र कोड है या आपके पास console.log कहीं है? – artm

+0

@artm, यह एकमात्र लगभग सटीक कोड है। नहीं 'console.log() 's। – Dmytro

+3

मैंने इससे पहले अनुभव किया था (आईई 9 मुझे लगता है कि यह था), पेज आईई में खाली हो रहा था, जब मैंने कंसोल डीबगर खोला तो यह ठीक काम कर रहा था, 'console.log' अपरिभाषित अपवाद फेंक रहा था क्योंकि कंसोल खुला नहीं था। जब आप कंसोल खोलते हैं तो यह काम करता है। शायद एक और मुद्दा हो सकता है लेकिन शायद संबंधित है। – artm

उत्तर

25

ऐसा लगता है जैसे आपको कैश प्रतिक्रियाएं मिल रही हैं। डेवलपर टूल्स में सर्वर विकल्प से हमेशा ताज़ा हो सकता है, जिससे आप केवल ताज़ा प्रतिक्रिया प्राप्त कर सकते हैं जब उपकरण स्वयं खोले जाते हैं।

विकल्प jQuery AJAX options ऑब्जेक्ट में जोड़ने का प्रयास करें, और इसका मान false पर सेट करें।

+0

धन्यवाद! मुझे एक ही समस्या थी, जो इस स्पष्टीकरण तक वास्तव में विचित्र लग रहा था। –

+1

मेरे लिए भी काम करता है। एक और कारण console.log है। अपने कोड से console.log हटाएं। –

+0

वह बिज्जर नहीं है? –

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