8***@qq.com
8***@qq.com
  • 发布:2019-03-11 16:31
  • 更新:2019-11-06 09:37
  • 阅读:3350

uni.request 传递复杂对象

分类:uni-app

uni.request({
url: 'https://www.example.com/request', //仅为示例,并非真实接口地址。
data: {
"usercode": "",
"token": "0a9a9809-5197-4334-9e1a-23f89a7d9b9b",
"req": {
"rows": 5,
"page": 1,
"keyword": "22"
}
},
success: (res) => {
console.log(res.data);
this.text = 'request success';
}
});


{
"usercode": "",
"token": "",
"req": {
"rows": 5,
"page": 1,
"keyword": "22"
}
}
这种data对象怎么传递?

2019-03-11 16:31 负责人:无 分享
已邀请:
8***@qq.com

8***@qq.com (作者)

以自己解决,针对二级对象req,进行JSON.stringify字符串化赋给req,后台单独处理req字符串,转换为json对象

前台:

data: {
"usercode": "",
"token": "0a9a9809-5197-4334-9e1a-23f89a7d9b9b",
"req":JSON.stringify({
"rows": 5,
"page": 1,
"keyword": "22"
})
}

后台C#
var res = HttpContext.Current.Request.Form["req"];
_req = JsonConvert.DeserializeObject<T>(res);

弄月

弄月

这太麻烦了吧,必须要后端配合

SimpleJalon

SimpleJalon - 个人承接PHP、uniapp项目,有案例,联系QQ 615773740,不接受外地工作,可付费提供技术支持。添加QQ时务必备注来意以及添加渠道,渠道可以写:`uniapp`

jq 可以这样吗?微信小程序可以这样吗?

弄月

弄月

js版serialize 实现

function serialize (obj, prefix) {  
  const str = []  
  let p  
  if (obj.length === 0) {  
    //  str.push(encodeURIComponent(prefix) + '=1')  
  } else {  
    for (p in obj) {  
      if (obj.hasOwnProperty(p)) {  
        const k = prefix ? prefix + '[' + p + ']' : p  
        let v = obj[p]  
        if (v instanceof Date) {  
          v = parseTime(v)  
        }  
        str.push((v !== null && typeof v === 'object') ? serialize(v, k) : encodeURIComponent(k) + '=' + encodeURIComponent(  
          v))  
      }  
    }  
  }  

  return str.join('&')  
}

uni.request.data改造

options.data = serialize(options.data)

这样就可以了

该问题目前已经被锁定, 无法添加新回复