加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱资讯网 (https://www.52junxun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php 接口json 数组自动变成了对象的问题

发布时间:2022-10-20 11:13:34 所属栏目:PHP教程 来源:
导读:  解决方式:就是把要传的数组参数string化(只需要把参数是数组的那些string化,其他按正常的格式),也就是在对应位置使用JSON.stringify(arr)。当然后端要对这些参数进行解码php接口,php中使用json_decode($_P
  解决方式:就是把要传的数组参数string化(只需要把参数是数组的那些string化,其他按正常的格式),也就是在对应位置使用JSON.stringify(arr)。当然后端要对这些参数进行解码php接口,php中使用json_decode($_POST[‘activity_picture’])
 
  先贴示例代码,拿去急用
 
  var objTemp = {
   merchant_id: 1,
   activity_title: "嗡嗡嗡",
   activity_picture: JSON.stringify(["falleg.img"]),
   activity_label_id: JSON.stringify(["1", "2"]),
   is_continued: 1,
  }
  //content-type: application/x-www-form-urlencoded
  this.release(objTemp);//请求接口已封装
  如果可以解决你的问题或者感觉可以解决你的问题,你或许可以继续往下读,我粗浅的讲一下原理。
 
  随便拷一段代码过来…
 
  改动之前:
 
  var objTemp = {
   merchant_id: 1,
   activity_title: "嗡嗡嗡",
   activity_picture: ["falleg.img"],
   activity_label_id: ["1", "2"],
   is_continued: 1,
  }
  //content-type: application/x-www-form-urlencoded
  this.release(objTemp);//请求接口已封装
  改动之前请求body被编码之后:
 
  在这里插入图片描述
 
  防止图片加载不出来,贴一段代码,图片加载出来就不用看下面这段代码。
 
  //Form Data | view URL encoded
  {
   merchant_id: 1
   activity_title: 嗡嗡嗡
   activity_picture: falleg.img
   activity_label_id: 1,2
   is_continued: 1
  }
  可以看到activity_picture,activity_label_id的数组标识不在了,因为content-type:application/x-www-form-urlencoded的原因,这个编码方式不懂的自行百度,总之就是把我们数组的标识给编码不在了,其实是这种编码方式只能识别到单双引号里的内容,外面的[]数组标识自然被忽略掉了。那我们要做的就是把参数的值字符化,让它在转换时保留[]数组标识。所以除了我上面给出的解决方案,JSON.stringify()之外。还可以直接把你的参数值塞进单或双引号之间。比如activity_picture:"[falleg.img]"
 
  改动之后:
 
  var objTemp = {
   merchant_id: 1,
   activity_title: "嗡嗡嗡",
   activity_picture: JSON.stringify(["falleg.img"]),
   activity_label_id: JSON.stringify(["1", "2"]),
   is_continued: 1,
  }
  //content-type: application/x-www-form-urlencoded
  this.release(objTemp);//请求接口已封装
  改动之后请求body被编码之后:
 
  在这里插入图片描述
 
  防止图片加载不出来,贴一段代码,图片加载出来就不用看下面这段代码。
 
  //Form Data | view URL encoded
  {
   merchant_id: 1
   activity_title: 嗡嗡嗡
   activity_picture: ["falleg.img"]
   activity_label_id: ["1","2"]
   is_continued: 1
  }
  好了,结果是前者请求出现问题,具体问题还要看后端的适配情况。
 
  后者请求正常,当然这个也需要和后端协商好正确的处理方式。
 

(编辑:我爱资讯网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!