Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Niepełne pobieranie przez $.getjson
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
olszam
Mam aktualnie w kodzie pobieranie danych z pliku json przez $.getjson co 3 sekundy. Niby pobiera ale np. gdy zmienię ręcznie w pliku json dane to dalej mam pobieranie tych samych starych wartości.
  1. <html>
  2.  
  3. <head>
  4. <meta charset="utf-8">
  5. <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  6. <style>
  7. html,
  8. body,
  9. #map {
  10. height: 100%;
  11. margin: 0px;
  12. padding: 0px
  13. }
  14. </style>
  15. <script src="https://maps.google.com/maps/api/js?v=3.exp" type="text/javascript"></script>
  16. </head>
  17. <body>
  18. <div id="map"></div>
  19.  
  20. <script type="text/javascript">
  21.  
  22. var map = new google.maps.Map(document.getElementById('map'), {
  23. zoom: 3,
  24. center: new google.maps.LatLng(0, 0),
  25. mapTypeId: google.maps.MapTypeId.ROADMAP
  26. });
  27.  
  28. var infowindow = new google.maps.InfoWindow();
  29. var marker, i;
  30. var markers = [];
  31. loadmarkers();
  32. setInterval(function() {
  33. loadmarkers()
  34. }, 3000);
  35.  
  36. function setAllMap(map) {
  37. for (var i = 0; i < markers.length; i++) {
  38. markers[i].setMap(map);
  39. }
  40. }
  41.  
  42. function loadmarkers() {
  43. //makrery
  44. $.getJSON('https://test2-olszam.c9users.io/nowy/loc.json', function(data) {
  45. var locations;
  46. locations = [
  47. ['śledź', data.latitude, data.longitude, 1]
  48. ];
  49.  
  50. setAllMap(null);
  51. for (i = 0; i < locations.length; i++) {
  52.  
  53. marker = new google.maps.Marker({
  54. position: new google.maps.LatLng(locations[i][1], locations[i][2]),
  55. map: map
  56. });
  57. markers.push(marker);
  58. google.maps.event.addListener(marker, 'mouseover', (function(marker, i) {
  59. return function() {
  60. infowindow.setContent(locations[i][0]);
  61. infowindow.open(map, marker);
  62. }
  63. })(marker, i));
  64.  
  65. }
  66. });
  67. }
  68. </script>
  69. </body>
  70.  
  71. </html>


plik json
  1. {"latitude":55.143296,"longitude":23.4346139}

jak dam pełne odświeżenie to wtedy idzie tylko że w przeglądarce mobilnej to muszę czyścić ciacha więc trochę nie za bardzo mi to pasuje sad.gif

głównie mi chodzi o to by na bieżąco co 3 sekundy pobierało świeże dane z pliku json.

sry za styl kodu nie mam w zwyczaju porządkować go.
trueblue
Po prostu dodaj do URL jakąś zmienną losową, np. timestamp.
Albo ustaw w .htaccess "czas życia" pliku na mniej niż 3 sekundy - nie wiem czy to ma w ogóle sens.
olszam
  1. 'https://test2-olszam.c9users.io/nowy/loc.json?'+Math.floor(Date.now() / 1000)
póki co działa zobaczymy co będzie później, po jakimś czasie wyjdzie szydło z worka:D
sabat24
Będzie działać, bo dla przeglądarki to za każdym razem zupełnie inny plik. Możesz też spróbować dodać w htaccesie taki kod i wtedy bez zmiany nazwy linka, też powinno zadziałać. Ja tego używam do wymuszenia odświeżania css-ów i js-ów, więc dla json też raczej zadziała.

Kod
<Files .json>
    Header unset Cache-Control
</Files>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.