jquery - load() - wyłaczenie cache

0

pisze sobie oto taka strone:
http://fron.beskidmedia.pl/epsxe-pl/

Mam kilka elementów:

<div class="lista2" id="cdrpeops.dll"><div class="nag">P.E.Op.S. CDR Driver 1.4</div><div class="opis1">Data modyfikacji: 05.05.2012&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ilość pobrań:&nbsp;</div><div class="opis2">...</div></div>

Dynamicznie przypisuje zdarzenia:

	$('.lista1, .lista2').each(function(){

		$(this).mouseover(function(){
			$(this).children().first().css('color', '#AF3F23');
			$(this).stop();
			$(this).fadeTo('normal', 1);
		});

		$(this).mouseout(function(){
			$(this).children().first().css('color', 'gray');
			$(this).stop();
			$(this).fadeTo('normal', .50);
		});

		$(this).click(function(){
			$('#ramka').load('pobierz.php?plik=' + $(this).attr('id'));
			$(this).find('.opis2').load('magazyn/' + $(this).attr('id') + '.txt');
		});

		$(this).find('.opis2').load('magazyn/' + $(this).attr('id') + '.txt');

	});

Jak widać po kliknięciu ma zostać wywołany plik php który zwiększa ilość pobrań w pliku tekstowym oraz rozpoczyna pobieranie,
a następnie na nowo ma zostać załadowana ilość pobrań do warstwy opis2:

<?php

	$plik = 'magazyn/'.$_GET['plik'];

	$fp = fopen($plik.'.txt', 'r+');
		$count = fgets($fp, 10);
			$count += 1;
			fseek($fp, 0);
		fwrite($fp, $count, 10);
	fclose($fp);

	echo '<script>location.href = "'.$plik.'";</script>';

?>

Plik tekstowy z ilością pobrań jest modyfikowany odpowiednio, pobieranie również się rozpoczyna.
Problem w tym że nie zawsze (raz jest ok a drugi raz nic się nie dzieje) zmienia mi się zawartość warstwy o klasie opis2 do której ma zostać załadowana ilość pobrań

Wygląda mi na to że gdy wczytuje do danej warstw na nowo ten sam plik to on wczytywany jest z caschu wiec nie widać zmian.
Poniższe rozwiązanie także nic nie dało:

        jQuery.ajaxSetup({
            // Disable caching of AJAX responses 
            cache: false
        });

Może ktoś z użytkowników wie jak rozwiązać mój problem?

0

W zwrotce (echo - w tym tagu script, najlepiej przed tym co masz teraz) dopisz od razu zaktualizowanie tego pola, nie rób tego osobno. Przeglądarka jak dostanie zlecenie otworzenia innej strony może przerywać działanie skryptów (dlatego to zły pomysł na pobranie pliku - takie coś - szczególnie jeżeli np. plik będzie mp3 i przeglądarka zechce otworzyć go za pomocą wtyczki).

Dodatkowo zdaje się, że Firefox już na tym nie podziała - nie wykona tagu script wstawionego poprzez "load". Możesz co najwyżej zwracać kod (+ odpowiedni mime-type) JS (ale bez tagów script) i zamiast używać load - wstawić ELEMENT (document.createElement - podejrzyj kod Google Analytics) do <head> - żadnego innerHTML, $.html() i podobnych.

Raczej po prostu rób +1 po kliknięciu i plik php niech od razu podaje plik - może być przez to niedokładne - ktoś kliknął wcześniej i przez to powinno dodać +2, ale to chyba nie jest AŻ tak ważne?
A jak nie - to może rób element IFRAME i do iframa ładuj plik do pobrania, a javascripty całej strony powinny działać spokojnie (ale szczerze to nie wiem czy wpakowanie pliku do IFRAME wywoła okienko pobierania - sprawdz)

edit:

  1. ty uważaj z nazwami plików jako ID - możesz dostać niepoprawny ID, może Ci potem skrypt nie podziałać
  2. Twoj problem raczej nie ma nic wspólnego z cache

edit [2]:
A na stronie w CSSach może dopisz?

#w1 { border-top-left-radius: 5px; border-top-right-radius: 5px; }
#w2 { border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; }

edit [3]: i jeszcze to, bo coś wystawało:

#w0 { background-color: #AF3F23; }
0

co do stylów to na każdej normalnej przegladarce jest ok
a co do umieszczenia skryptu w pliku php to dzieki za sugestie - sprawdze to!

0

Dziękuje zainteresowanym (dzek69) za pomoc, niestety poszedłem na łatwizne i zastosowałem setInterval i w nim odczytuje zmiany w plikach txt.
Ma to minus bo cały czas sprawdza niby niepotrzebnie ale z drugiej strony aktualizuje dane jeśli ktoś inny pobierze plik w tym samym czasie.
A co do wystających rogów poza zaokrąglenie to overflow:hidden; nałożone na główną warstwę powinno rozwiązywać problem (w ff i chrome działa w ie nie wiem bo mam ie8 a on w ogóle nie zaokrągla rogów :P).

1 użytkowników online, w tym zalogowanych: 0, gości: 1