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

如何使用两个变量创建JSON键值对并解决AJAX传参pid未定义问题

问题结论

你当前的写法存在错误,问题的核心是 sessionStorage 仅支持存储字符串类型数据,直接存入JavaScript对象会被隐式转换为[object Object]格式的字符串,取出后自然无法读取pid属性。

错误原因
  • sessionStorage的存储规则限制所有值必须为字符串,你直接存入userData对象时,JS会自动调用对象的toString()方法,最终存储的内容为无实际数据的"[object Object]"字符串
  • 取出该字符串后直接访问.pid属性,就会抛出未定义的报错
解决方法

存储和读取时分别做序列化、反序列化处理即可:

存储阶段

使用JSON.stringify()将对象转为JSON字符串后再存入sessionStorage:

var a = result.master_id;
var b = result.session_name;
var userData = {'pid':a,'session' :b};
// 序列化后存储
sessionStorage.setItem('userData', JSON.stringify(userData));

读取阶段

使用JSON.parse()将取出的字符串还原为原始对象,再读取属性使用:

// 取出后反序列化为对象
var storedUserData = JSON.parse(sessionStorage.getItem('userData'));
// 可正常读取pid属性
console.log(storedUserData.pid);
// 之后正常传给AJAX即可

可选兼容处理

如果存在存储内容为空的场景,可以加兜底判断避免JSON.parse报错:

var storedStr = sessionStorage.getItem('userData');
var userData = storedStr ? JSON.parse(storedStr) : {};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:27:03