我正在使用json文件加载实时地图,但是当我登录页面时,它会从服务器n加载json文件,显示实时地图位置。但有时它没有加载json文件,它从catche文件n获取数据因为catche文件我无法显示实时位置。请帮我做点什么
提前致谢
这是代码
<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>
答案 0 :(得分:0)
在获取文件时,无论使用何种方法,都要使用旧技巧。将更改的查询字符串添加到文件名中,例如:
?t=CURRENT_TIMESTAMP
生成CURRENT_TIMESTAMP时间戳。 对于浏览器,它将始终是一个新文件,但不是服务器。所以浏览器不会在这里使用缓存。
答案 1 :(得分:0)
请提供更多信息,例如请求JSON的位置,用于请求JSON的代码等等。
无论如何,获取资源的一个巧妙方法是使用javascript或甚至从服务器端呈现过程向请求附加随机query
..
http://example.com/data/map.json?123
与:
不同http://example.com/data/map.json?098
并且应该发出新请求,因为该数据从未被缓存。
使用jQuery的一个例子(在评论中说明):
$.getJSON('/data/map.json?' + (new Date().getTime()), ...)
使用Date
也可以确保您永远不会请求相同的随机号码。
我建议您尝试在服务器端修复问题..
答案 2 :(得分:0)
您可以使用此
全局禁用缓存$(document).ready(function() {
$.ajaxSetup({ cache: false });
});
或使用$.ajax({})
加载json文件并将cache
设置为false
答案 3 :(得分:0)
我同时使用两种组合
$(document).ready(function() {
$.ajaxSetup({ cache: false });
$.getJSON('json/<?php echo $vehicle_imei_no1;?>.json?' + (new Date().getTime())).done(function(json){ });
});
这对我有用