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

sessionStorage存JSON字符串调用AJAX后端收到{'object Object':''}如何解决

问题根因
  • 你通过AJAX提交apiValue时,传递的是已经序列化好的JSON字符串,但没有显式指定请求头的Content-Type为JSON格式。jQuery默认会将传入的字符串按照application/x-www-form-urlencoded格式处理,会自动把字符串尝试转为表单键值对,最终导致整个JSON对象被toString为[object Object]作为键,值为空,后端就收到了{ 'object Object': '' }的异常数据。
  • 额外注意:你当前在forEach循环中反复覆盖sessionStorage里的user字段,最终只会存储最后一条循环数据,如果业务需要存储所有行的用户数据,需要先把所有数据存入数组再统一序列化存储。
解决方法

两种方案二选一即可:

方案1:保留传JSON字符串的逻辑,添加请求头配置

修改graphApi中的AJAX请求,显式指定Content-Type为JSON:

function graphApi(){
  const apiValue = sessionStorage.getItem('user');
  console.log(apiValue,"apivalue new")
  $.ajax({
    type: "POST",
    data: apiValue,
    contentType: "application/json; charset=utf-8", // 新增这行配置
    url: "http://localhost:5000/file",
    success: function (data) {
      console.log(data)
    },
    error: function(err){
      alert(err);
    }
  })
}

注意:后端需要提前配置好JSON格式的请求体解析中间件(比如Express的express.json()),才能正常解析该格式的请求。

方案2:把存储的JSON字符串转回对象再提交

不需要修改请求头,jQuery会自动将对象转为标准表单格式,后端可直接解析:

function graphApi(){
  // 取出存储的JSON字符串后先反序列化为对象
  const apiValue = JSON.parse(sessionStorage.getItem('user'));
  console.log(apiValue,"apivalue new")
  $.ajax({
    type: "POST",
    data: apiValue, // 直接传对象即可
    url: "http://localhost:5000/file",
    success: function (data) {
      console.log(data)
    },
    error: function(err){
      alert(err);
    }
  })
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:24:02