I using some GeoIP service to place country flag on pages depends on country IP. And I need to cache JSON response for all pages on my site.
This code placed into
$.getJSON()
is equivalent to
$.ajax({
dataType: "json",
url: 'http://smart-ip.net/geoip-json/ip_address',
data: data,
success: function(data){ // do something here }
});
In this form you can add additional parameters, such as cache:true
, or any other $.ajax parameters you might need.
You could use localStorage like that:
var smartIp = JSON.parse(localStorage.getItem('smartIp'));
if (!smartIp) $.getJSON('http://smart-ip.net/geoip-json?callback=?', function (data) {
smartIp = localStorage.setItem('smartIp', JSON.stringify(data));
});
DEMO
So, in your specific case, you should use this code in your header.php
page:
var smartIp = JSON.parse(localStorage.getItem('smartIp'));
if (!smartIp) $.getJSON('http://smart-ip.net/geoip-json?callback=?', function (data) {
smartIp = localStorage.setItem('smartIp', JSON.stringify(data));
$('#flag').html("<a class='fancybox-inline int' href='#international'><img src='/images/flags/" + data.countryCode + ".png'></a>");
});
else $('#flag').html("<a class='fancybox-inline int' href='#international'><img src='/images/flags/" + smartIp.countryCode + ".png'></a>");