Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [jquery] reload obrazka na stronie
adamantd
post 8.01.2013, 13:35:34
Post #1





Grupa: Zarejestrowani
Postów: 228
Pomógł: 7
Dołączył: 15.08.2012
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


Witam! Mam swoją captchę napisaną w php gd i postanowiłem sobie ją ulepszyć o odświeżanie obrazka po kliknięciu na niego. Prawie wszystko działa po za jednym -w Chrome wszystko jest tak jak powinno być -klikamy na obrazek jeśli jest niezbyt czytelny, pojawia się mały loader i po sekundzie mamy nowy obrazek a loader znika. We wszystkich innych przeglądarkach obrazek pomimo, że zostaje utworzony nowy to nie pokazuje się on na stronie w miejscu starego tylko wyświetla się cały czas stary. Czy chodzi o Cache przeglądarki? Jeśli tak to jak ją wyczyścić, żeby wczytała sobie nowy obrazek przedstawiam kod do refresha obrazka po kliknięciu

  1.  
  2.  
  3. var mtiPsm=0;
  4. $('#captcha_oglo').click(function(){
  5. if(mtiPsm==0){mtiPsm=1;} else {return false;}
  6. var $loaderTmpCapt = $('<img />')
  7. .attr({'id':'mtiPsmCaptLoad',
  8. 'src':'images/processing.gif',
  9. 'alt':'load...'
  10. })
  11. .css({
  12. 'width':'16px',
  13. 'height':'16px',
  14. 'position':'absolute',
  15. 'top':'10px',
  16. 'left':'-35px',
  17. 'zIndex':'99999'
  18. });
  19. $('#parentTdCaptcha').append($loaderTmpCapt);
  20. $.post('wsp_scr.php?captcha_rand=rand', function(){
  21. $('#captcha_oglo').attr('src','CLASS/Captcha/fotoCapt.jpg');
  22. $('#mtiPsmCaptLoad').remove();
  23. mtiPsm=0;
  24. });
  25. });
  26.  
  27.  
  28.  


Tu gdzie nadaję atrybut src dla #captcha_oglo jest to taka sama ścieżka jak była przed kliknięciem -tak jak pisałem wyżej w chromie działa, co mogę robić nie tak?

Próbowałem też obchodzić to w jakiś sposób wzorując się na min.

http://forum.php.pl/index.php?showtopic=85511

ponieważ zmiana obrazka na obrazek z inną nazwą odbywa się bez problemu pod wszystkimi przeglądarkami. Pozmieniałem trochę skrypt tworzenia obrazka captcha i jest zapisywany na zmianę z dwoma końcówkami 1 lub 2 i w zależności jaki jest na stronie po refreshu obrazka na nowy wczytywany jest z inną literką. Ale niestety wtedy do cache przeglądarki zapisane są po prostu dwa obrazki o tych dwóch różnych nazwach i kiedy refreshuję obrazek to pokazują się właśnie one naprzemiennie.
Go to the top of the page
+Quote Post
expert
post 10.01.2013, 19:06:12
Post #2





Grupa: Zarejestrowani
Postów: 211
Pomógł: 4
Dołączył: 29.10.2008

Ostrzeżenie: (0%)
-----


Spróbuj do adresu obrazka dodać:
Kod
'CLASS/Captcha/fotoCapt.jpg?_='+(new Date()).getTime()


W różnych przeglądarkach jest różnie, a z tym sposobem nigdy nie miałem problemów.

Ten post edytował expert 10.01.2013, 19:07:12
Go to the top of the page
+Quote Post
adamantd
post 11.01.2013, 16:41:38
Post #3





Grupa: Zarejestrowani
Postów: 228
Pomógł: 7
Dołączył: 15.08.2012
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


Chyba będziesz moim nowym mentorem od tej pory smile.gif kod działa pod wszystkimi przeglądarkami choć nie wiem dlaczego tak jest?
Dlaczego podpięcie do ścieżki do obrazka obiektu Date() oraz wywołanie getTime() powoduje, że obrazek się odświeża? Pytam bo może się to przydać jeszcze w przyszłości nie raz
Go to the top of the page
+Quote Post
expert
post 11.01.2013, 20:12:22
Post #4





Grupa: Zarejestrowani
Postów: 211
Pomógł: 4
Dołączył: 29.10.2008

Ostrzeżenie: (0%)
-----


Dlatego, że (new Date()).getTime() to aktulany czas z dokładnością so do milisekundy i każde wywołanie tej funkcji da Ci zawsze inną liczbę. Podpinając to do adresu obrazka, zawsze będziesz miał inny adres, nawet zmiania z 234234234234234 na 234234234234235 to już inny adres dla przeglądarki. Jedyny wyjątek, gdy w tej samej mili sekundzie wywołasz funkcję, to adres będzie ten sam. Ale to jest bardzo mało prawdopodobne.
Go to the top of the page
+Quote Post
adamantd
post 11.01.2013, 22:51:44
Post #5





Grupa: Zarejestrowani
Postów: 228
Pomógł: 7
Dołączył: 15.08.2012
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


Często używam podpinania do adresu po pytajniku różnych rzeczy np xxx.php?xxxx=www&eeeee=rrrrr ale nie wiedziałem, że można tak podpiąć do nazwy obrazka obrazek.jpg?_=xxxxx -obrazek wyskoczy ten sam bo do pytajnika nazwa jest nie zmieniona a to co jest po pytajniku to już nie ważne (ważne żeby było inne niż wcześniej)
rozumiem
dzięki

Ten post edytował adamantd 11.01.2013, 23:02:37
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 21.05.2024 - 20:40