jquery – 缓存JSON响应

前端之家收集整理的这篇文章主要介绍了jquery – 缓存JSON响应前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用一些GeoIP服务在页面上放置国家标志取决于国家IP.我需要为我网站上的所有页面缓存JSON响应.

代码放入header.PHP

$.getJSON('http://smart-ip.net/geoip-json?callback=?',function(data) {
  $('#flag').html("<a class='fancybox-inline int' href='#international'><img src='/images/flags/"+data.countryCode+".png'></a>");
  }

是否可以使用$.ajaxSetup({cache:true})缓存它? – 似乎行不通.

或者最好使用HTML5 localStorage,但我不知道该怎么做.

我也尝试了JSONCache插件,但它对我不起作用.

解决方法

您可以像这样使用localStorage:
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

因此,在您的特定情况下,您应该在header.PHP页面中使用此代码

var smartIp = JSON.parse(localStorage.getItem('smartIp'));

if (!smartIp) $.getJSON('http://smart-ip.net/geoip-json?callback=?',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>");

猜你在找的jQuery相关文章