You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

带Cookie检查的Geo-redirect代码调试:为何无法正常运行?

地理重定向Cookie检查代码的错误分析与修复

你的代码无法运行主要有两个核心问题:

1. 语法错误:多余的闭合括号

代码最后一行的});没有对应的开启语句(没有未闭合的$.ajax或函数调用),这会直接导致浏览器抛出语法错误,阻断整个脚本执行。

2. 缺少Cookie操作依赖

你使用了Cookies.get()方法,但没有引入提供该API的第三方库(比如js-cookie),浏览器中不存在Cookies全局对象,会抛出"ReferenceError: Cookies is not defined"的错误。


修复方案(两种可选)

方案一:使用原生Cookie操作(无需依赖外部库)

直接用原生JS实现Cookie获取,避免引入额外库:

<script async src="https://get.geojs.io/v1/ip/geo.js"></script>
<script>
// 原生方法获取指定Cookie的值
function getCookie(name) {
  const value = `; ${document.cookie}`;
  const parts = value.split(`; ${name}=`);
  if (parts.length === 2) return parts.pop().split(';').shift();
}

var cookieSwitch = 'geo-switch'; 
if(typeof getCookie(cookieSwitch) == 'undefined') { // 未检测到Cookie则执行地理重定向
  function geoip() {
    $.ajax({
      type: 'get',
      url: 'https://get.geojs.io/v1/ip/country.json',
      success: function(data) {
        if (data['country'] == "NZ") {
          window.location = "https://www.example.com/";
        }
      }
    });
  }
  geoip();
}
</script>

方案二:引入Cookie操作库

如果想继续使用Cookies.get(),需要先引入js-cookie库:

<!-- 先引入js-cookie库 -->
<script src="https://cdn.jsdelivr.net/npm/js-cookie@3.0.1/dist/js.cookie.min.js"></script>
<script async src="https://get.geojs.io/v1/ip/geo.js"></script>
<script>
var cookieSwitch = 'geo-switch'; 
if(typeof Cookies.get(cookieSwitch) == 'undefined') {
  function geoip() {
    $.ajax({
      type: 'get',
      url: 'https://get.geojs.io/v1/ip/country.json',
      success: function(data) {
        if (data['country'] == "NZ") {
          window.location = "https://www.example.com/";
        }
      }
    });
  }
  geoip();
}
</script>

内容的提问来源于stack exchange,提问作者Bainn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 21:15:34