2014-11-17 23 views
17

IE (11) ile ilgili garip bir sorunla karşılaştım. Basit jQuery kodu var:jQuery ajax, IE hata ayıklayıcısını açık olduğunda yalnızca IE'de çalışır

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

şey bu kod IE açtığınızda, (henüz önceki sürümlerinde test etmedi, IE 11 hariç benim durumumda) ANCAK IE dışındaki tüm tarayıcılarda mükemmel çalışıyor olmasıdır neyin yanlış olduğunu görmek için javascript hata ayıklayıcıda yerleşik - her şey iyi çalışıyor. IE, denetleyici eylemine ajax çağrısı yapar, denetleyicideki kesme noktası vurulur. Eylem sadece bazı şeyleri sayarken hiçbir şey döndürmez (void türünde). Zaten this thread sağlanan eklenti çözüm denedim ama yararlı değildi.

GÜNCELLEME:

Basit MVC uygulama here yayımladım sorunu göstermek için. Eğer resmin üzerine tıkladığınızda, tarayıcınız bu eyleme ajax istekte: Bu jQuery kodu ile

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; 
} 

:

$(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); 
     }); 
    }); 
}); 

Gördüğünüz gibi - aksiyon başarısına uyarılır basit dize döndürür. Bu sayfayı IE'de deneyebilirsiniz. NO isteği aslında gönderilir, ancak hala success olay işleyicisi çağrılır ve ileti uyarılır, isteklerin miktarının artmadığını fark edeceksiniz (bu muhtemelen, bazı büyük olasılıkla başarılı bir istek sonra bazı eski önbelleğe alınmış iletidir emin değil). Başka bir tarayıcıda, isteklerin sayısı artar, çünkü görüntüyü her tıkladığınızda gönderilir. IE hata ayıklayıcısını açarsanız - istekleri de gönderilecektir. Bunun bir çeşit IE önbelleği ile ilgili sorun olduğunu öneriyorum.

+0

Tek kod bu mu yoksa bir yer mi konsol.log var mı? – artm

+0

@artm, bu neredeyse kesin kod. 'Console.log()' dır. – Dmytro

+3

Bunu daha önce yaşadım (IE9 sanırım), sayfa IE'de boş çıkıyordu, konsol hata ayıklayıcısını açtığımda iyi çalışıyordu, konsolun açılmamış olması nedeniyle 'konsol.log' undefined istisnalar atıyordu. Konsolu açtığınızda çalışır. Başka bir sorun olabilir ama belki ilgili olabilir. – artm

cevap

25

Önbelleğe alınmış yanıtlar alıyor olabilirsiniz. Geliştirici araçları, Sunucusundan her zaman Yenile seçeneğine sahip Her Zaman Yenile seçeneğine sahip olabilir, bu da araçların kendisi açıldığında yeni bir yanıt almanızı sağlar.

jQuery AJAX options nesnesindeki cache nesnesini eklemeyi deneyin ve değerini false olarak ayarlayın.

+0

Teşekkür ederiz! Aynı problem vardı, bu açıklamaya kadar gerçekten tuhaf görünüyordu. –

+1

benim için de çalışıyor. Bir başka sebep de konsol.log. Console.log kodunu kodundan kaldırın. –

+0

bu bizzare değil mi? –

İlgili konular