dpdhnd3577
dpdhnd3577
2016-06-25 05:26

浏览器从缓存中获取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 doulan4371 5年前

    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

    点赞 评论 复制链接分享
  • duanchi0883649 duanchi0883649 5年前

    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

    点赞 评论 复制链接分享
  • dtx63505 dtx63505 5年前

    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..

    点赞 评论 复制链接分享
  • doupu1727 doupu1727 5年前

    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.

    点赞 评论 复制链接分享

相关推荐