如何为地理定位优化jQuery.getJSON()
How to optimize jQuery.getJSON() for geolocalisation
我使用jQuery.getJSON()来获取访问者的位置,并基于该位置显示/隐藏特定的div。因此,由于服务器api限制,我希望该请求在访问期间每个访问者只发送一次,可能使用会话或缓存在客户端存储该位置在访问期间使用;你有什么建议吗?还是一个可以使用的实现?
<script>
$(function () {
$.getJSON('http://freegeoip.net/json/?callback=?', function (location, textStatus, jqXHR) {
console.log("callback running");
console.log(textStatus);
console.log(jqXHR);
var div = document.getElementById('showadsbayt');
jQuery('#region-name').html(location.country_code );
if (location.country_code != 'MA') {
div.style.display = 'none';
}
});
});
</script>
根据实现的复杂程度、应用程序有多少页面以及是否要对用户隐藏位置数据,您会想到多种选择。我将在下面简单地列出它们。
保存为全局变量
这个很明显,我只是为了完整起见把它放在这里,但如果你做的是单页应用程序,它就足够了。
将您感兴趣的位置数据部分附加为查询字符串
这可能是最简单的解决方案,如果你的应用程序有多个页面,你所需要做的就是在它们之间持久化数据。这也有向用户公开位置数据的效果,例如允许他们添加书签或与给定位置共享页面—在您的用例中可能需要也可能不需要。
使用cookie
cookie就是为了这个目的——在用户的机器上保存键值对以供以后使用。您可以简单地将位置数据保存为cookie,稍后检查该cookie是否已设置。如果是,则使用cookie中的数据,而不是进行API调用。这也会在访问之间保持,所以如果您关心用户可能更改位置的情况,则需要设置较低的过期时间或允许他们重置位置。
另外,如果你在欧盟,你需要把愚蠢的cookie法律横幅放在你的应用程序的某个地方。
使用localStorage的和cookie一样,除了更灵活一点,在Opera Mini上不起作用。如果你的位置数据因为一些奇怪的原因而非常大,可以使用这个。
显然这也属于欧盟cookie法,所以如果你走这条路,准备好你的横幅
使用Web Storage,下面的代码将发现用户是否访问您的页面,如果没有访问ajax将发出请求,并设置expire
日期,您可以在几天内更改值或设置0为永远,如果访问ajax将不会请求。
< script >
$(function() {
var expire = 30; //in days ====> 0 == for ever
if (!localStorage["visited"] || (+localStorage["visited"] <= new Date().getTime() && +localStorage["visited"] > 0)) {
localStorage["visited"] = (+expire * 24 * 60 * 60 * 1000) + new Date().getTime();
localStorage["visited"] = expire == 0 ? 0 : localStorage["visited"];
$.getJSON('http://freegeoip.net/json/?callback=?', function(location, textStatus, jqXHR) {
console.log("callback running");
console.log(textStatus);
console.log(jqXHR);
var div = document.getElementById('showadsbayt');
jQuery('#region-name').html(location.country_code);
if (location.country_code != 'MA') {
div.style.display = 'none';
}
});
}
}); < /script>
- jQuery.getJSON失败,语法错误
- jQuery$.getJSON抛出意外令牌
- 在ruby on rails中使用jquery getJSON获取数据
- 如何使用pass参数从jQuery.getJSON获取回调
- JQuery $.getJSON() 不能正确处理回调
- 如何在循环期间访问 jquery getJson 调用 ($.getJson) 中的索引变量
- jQuery $.getJSON Fail
- 如何将URL与JQuery.getJSON()函数一起使用
- jQuery.getJSON无法在具有特殊字符的IE中工作
- Jquery:$.getJSON,具有不同的url端口
- jQuery.getJSON没有返回任何内容
- jQuery getJSON在成功时从不调用成功函数
- jQuery getJSON - 引用预先存在的对象
- JQuery.getJSON() 读取本地文件
- jquery getjson 函数:回调返回错误的字符串
- JSON API 不会在 jquery getJSON 中返回任何结果
- 追加方法使用 from in a Jquery $getJSON
- JQuery $.getJSON 让我感到困惑
- jQuery .getJSON 和 .ajax get request 都返回 null
- 反缓存代码到 jquery getJson