dpdhnd3577
2016-06-25 05:26
浏览 290

浏览器从缓存中获取JSON文件

I am loading live map using json file but when i login the page some time it loads the json file from server n show the live map location. But sometime it not load the json file it takes the data from catche file n because of catche file i unable to show the live location. Please help me what to do

Thanks in advance

This is the code

<script>
$(document).ready(function() {     

  window.setInterval(function(){

  $.getJSON('json/<?php echo $vehicle_imei_no2;?>.json').done(function(json){  

     var lat_lng = new Array();
     var path = new google.maps.MVCArray();
     var poly = new google.maps.Polyline({ map: map, strokeColor: '#0000ff' });
     service = new google.maps.DirectionsService();
     directionsDisplay = new google.maps.DirectionsRenderer();

       $.each(json, function(key, data) {
          latLng = new google.maps.LatLng(data.lat, data.lng); 
            if(data.date == '<?php echo $currentDate;?>'){
              if(data.time >= '<?php echo $sessionTime; ?>'){
                  lat_lng.push(latLng);
                    }
                 }

        addMarker(latLng, map); //add new marker
             }); //each


             for (var i = 1; i < lat_lng.length; i++) {

                    var src = lat_lng[i];
                   var des = lat_lng[i + 1];
                   path.push(src);
                   poly.setPath(path);
                   service.route({
                       origin: src,
                       destination: des,
                       travelMode: google.maps.DirectionsTravelMode.DRIVING
                   }, function (result, status) {
                       if (status == google.maps.DirectionsStatus.OK) {
                            directionsDisplay.setDirections(result);
                       }
                   });

                }



            });    //getjson

   }, 1000);//interval 
    });

 function addMarker(location,map) {
     marker.setPosition(location);
     marker.setIcon('assets/img/moving_bike.png');
     }

</script>
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • doulan4371 2016-06-25 05:59
    已采纳

    You can globally disable cache using this

    $(document).ready(function() {
      $.ajaxSetup({ cache: false });
    });
    

    or use $.ajax({}) to load the json file and set cache to false

    点赞 打赏 评论
  • doupu1727 2016-06-25 05:31

    While fetching the file regardless of what kind of method you are using use an old trick. Add to the file name a changing query string for example:

    ?t=CURRENT_TIMESTAMP
    

    Where CURRENT_TIMESTAMP is generated timestamp. For the browser it will be always a new file, but not for the server. So the browser won't use caching here.

    点赞 打赏 评论
  • dtx63505 2016-06-25 05:33

    Please provide more information to your question, such as where the JSON is being requested from, the code used to request the JSON and similar..

    Anyway, a neat trick with fetching resources is to append a random query to the request with javascript or even from a server side rendering process..

    http://example.com/data/map.json?123
    

    is not the same as:

    http://example.com/data/map.json?098
    

    and should make a new request since that data has never been cached.

    An example using jQuery (stated in comments):

    $.getJSON('/data/map.json?' + (new Date().getTime()), ...)
    

    using the Date will also ensure you never request the same random number.

    I'd suggest you try to fix the issue on the server side of things..

    点赞 打赏 评论
  • duanchi0883649 2016-06-29 11:02

    i use both combination

    $(document).ready(function() {
      $.ajaxSetup({ cache: false });
    
    $.getJSON('json/<?php echo $vehicle_imei_no1;?>.json?' + (new Date().getTime())).done(function(json){ });
    
    });
    

    and this works for me

    点赞 打赏 评论

相关推荐 更多相似问题