使用split()处理Cookie多值时遇Cannot read property 'split' of undefined错误求助
解决
Cannot read property 'split' of undefined的问题 嘿,这个报错其实很好定位——你直接调用split()的那个变量utmz_val是undefined,说白了就是__utmzz这个Cookie压根儿不存在,或者获取失败了,所以没法调用字符串的split()方法。
核心问题分析
你的代码里直接写了var utmz_val = jQuery.cookie("__utmzz");然后就去执行o.split("|"),但如果这个Cookie没被设置过、或者因为域名/路径不匹配拿不到,utmz_val就会是undefined,调用split()自然就触发报错了。
修复方案:先判断Cookie是否存在再操作
给代码加个前置判断,确保拿到有效的Cookie值再执行拆分逻辑,修改后的代码示例如下:
var sourcez = jQuery.cookie("Source"); var mediumz = jQuery.cookie("Medium"); function utmze(eutmz) { var utmz_val = jQuery.cookie("__utmzz"); // 先检查Cookie是否存在且不为空字符串 if (!utmz_val) { console.log("警告:__utmzz Cookie不存在或为空"); return; // 这里可以根据需求返回默认值或者做其他兜底处理 } // 确认有值之后再拆分 var r = utmz_val.split("|"); for (var a = 0; a < r.length; a++) { var t = r[a]; // 继续你的后续业务逻辑... } }
额外排查小技巧
- 打开浏览器开发者工具(按F12),切换到
Application(Chrome)或Storage(Firefox)标签,查看Cookie列表,确认__utmzz是否真的存在 - 检查Cookie的域名和路径设置,确保你的代码运行的页面和Cookie的域名/路径匹配,否则会获取不到
- 可以先在函数开头加一行
console.log("utmz_val的值:", utmz_val),直观看到这个变量的实际内容,方便排查
内容的提问来源于stack exchange,提问作者Rahul Thakur
相关产品推荐
相关产品推荐

