2014-06-20 19 views
7

D3 öğelerini json çağrısı (d3.json) ile yeniden çizmenin IE9 + 'da güncellenmesini istemediğini fark ettim. Bunun nedeni, json çağrılarının önbelleğe alındığı ve tarayıcının yeni veriler geçtikçe kayıt olmamasıdır. tüm ajax çağrıları için küresel, yanlış:D3.json kurulum önbelleği false

$.ajaxSetup({ cache: false }); 

Ama ajax çağırmak için kullanarak kendi yöntemiyle beri d3.json çağrılara nasıl ekleyebilir Normal jQuery ajax çağrıları için geçici çözüm önbelleğe onun özelliğini ayarlamaktır? ... Ben bunu gerçekleştirmek nasıl herhangi bir öneri

var noCache = new Date().getTime(); 
d3.json(data + "?_=" + noCache) 

ama bunu yapmak için biraz topal yoludur: Ben yolun sonra şimdiki zaman damgası ekleyerek başarılı? Veya daha da iyisi, eğer IE çalışırsa bunu nasıl kurarım?

+0

Bence JQuery'yi kullanmak daha kolay. –

+0

Haklısınız. Tüm aramaları d3.json'dan '$ .ajax' olarak değiştirdim. Şimdi başka bir problemle karşılaşıyorum, tarayıcının IE olup olmadığını veya tarayıcı IE10-11 olup olmadığını nasıl belirleyebilirim? Bu versiyonlardan 'IF IE' koşullu yorumlarını kaldırdıkları için. Hala web'de bir yanıt arıyor, ancak doğru bir – Alchnemesis

cevap

0

Aynı sorunu yaşadım. Bu kodu html belgesinin HEAD'sine ekleyerek çözdüm.

<meta http-equiv="cache-control" content="no-cache"> 
<meta http-equiv="expires" content="0"> 
<meta http-equiv="pragma" content="no-cache"> 

Ancak bu belirli bir sayfaya her nesnenin önbelleğe almasını önlemek, böylece görüntü, yazı tipleri ve diğerleri ile dikkatli olacağım.

+0

bulamıyor Onlar sadece AJAX isteği için önbellek, tüm sayfa için önbellek geçersiz kılmak istiyorum. Yalnızca sayfanızı geri dönüş ziyaretleri yaptığınız siteler için ideal olmayan TÜM TÜMÜ için önbelleğe almayı istemiyorsanız bunu yapmalısınız. Önbellek senin arkadaşın! – aboutaaron