微信小程序使用content-type等于x-www-form-urlencoded方式使用request请求数据

因为服务器只能接收x-www-form-urlencoded方式接收前端收到的数据 所以微信小程序开发的时候,必须鼓捣这个问题。

微信默认使用content-type是 application/json

用wx.request方法改掉header为x-www-form-urlencoded比较简单

wx.request({
  ‘content-type‘: ‘application/x-www-form-urlencoded‘

})

这么干就可以了。

但问题是,微信小程序,似乎不会把我们的数据自动转换成为该格式数据。

解决方案是使用下面这种方法

function JSON_to_URLEncoded(element,key,list){
  var list = list || [];
  if(typeof(element)==‘object‘){
    for (var idx in element)
      JSON_to_URLEncoded(element[idx],key?key+‘[‘+idx+‘]‘:idx,list);
  } else {
    list.push(key+‘=‘+encodeURIComponent(element));
  }
  return list.join(‘&‘);
}

 

测试

var data = {
  ‘users‘ : [
    {
      "id": 100,
      "name": "Stefano"
    },
    {
      "id": 200,
      "name": "Lucia"
    },
    {
      "id": 300,
      "name": "Franco"
    },
  ],
  ‘time‘ : +new Date
};

console.log(
  JSON_to_URLEncoded(data)
);

/*
Output:
users[0][id]=100&users[0][name]=Stefano&users[1][id]=200&users[1][name]=Lucia&users[2][id]=300&users[2][name]=Franco&time=1405014230183
*/

如果你是使用ES2015,试试一行代码实现这个方法功能。 但你是复杂的数据,还是不要用下面这个方法了。

const toUrlEncoded = obj => Object.keys(obj).map(k => encodeURIComponent(k) + ‘=‘ + encodeURIComponent(obj[k])).join(‘&‘);

toUrlEncoded({hello: ‘world‘, message: "JavaScript is cool"});
// => "hello=world&message=JavaScript%20is%20cool"

  

原文地址:https://www.cnblogs.com/saving/p/9943554.html

时间: 2024-08-07 01:34:24

微信小程序使用content-type等于x-www-form-urlencoded方式使用request请求数据的相关文章

微信小程序 input 的 type属性 text、number、idcard、digit 区别

微信小程序的 input 有个属性叫 type,这个 type 有几个可选值: text:不必解释 number:数字键盘(无小数点) idcard:数字键盘(无小数点.有个 X 键) digit:数字键盘(有小数点) 注意:number 是无小数点的,digit 是有小数点的 输入时键盘只能出现相应的数字键盘 转发自:https://blog.csdn.net/yelin042/article/details/72519138 原文地址:https://www.cnblogs.com/firs

微信小程序提示:https://api.map.baidu.com 不在以下 request 合法域名列表中

如果你想利用百度地图API定位来获得当前位置,但却出现了如标题所示问题,那么请接着看: 1.首先我们需要在百度地图开放平台(https://lbs.baidu.com/apiconsole/key?application=key) 注册为开发者. 2.申请开发者密钥(AK): 如下AK就是你要的. 3. 根据百度给的教程继续下去~https://lbs.baidu.com/index.php?title=wxjsapi/guide/helloworld 原文地址:https://www.cnbl

微信小程序之网络通信

关于网络通信,这里我使用的是wx.request,官方代码示例如下: wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 data: { x: '', y: '' }, header: { 'content-type': 'application/json' // 默认值 }, success (res) { console.log(res.data) } }) 对于初学者而言,官方示例可能会看不怎么懂,所以我就以我自己当初项目驱动学习的方式(开发个人的

微信小程序入门案例

本文通过具体的实例记录微信小程序的入门知识. 1.特点 不需要安装 依赖微信应用 更接近原生APP 丰富的框架及API可达到快速开发的目的 2.工具使用 在开发的过程中可以使用微信开发者工具,更加直观的进行调式及看到界面:下载地址 3.目录结构 pages:小程序页面,包括js(页面逻辑),wxml(页面结构),wxss(页面样式)和json(页面配置) app.js:小程序公共逻辑 app.json:小程序公共配置 app.wxss:小城市公共样式 4.公共配置 window:设置默认页面的窗

微信小程序源码下载(200多个)

微信小程序源码下载汇总,点击标题进入对应的微信小程序下载页面. 最新 demo源码(点击标题进入帖子下载) 描述 1 微信小程序 会议室预定小程序 微信小程序 会议室预定小程序**** 本内容被作者隐藏 **** 2 微信小程序-双人五子棋小游戏 微信小程序-双人五子棋小游戏**** 本内容被作者隐藏 **** 3 打卡签到小程序 用微信小程序实现的一个简单的打卡签到的小程序拒绝 4 微信小程序---左滑删除 微信小程序---左滑删除**** 本内容被作者隐藏 **** 5 一个借钱的记事本的微

微信小程序学习指南

作者:初雪链接:https://www.zhihu.com/question/50907897/answer/128494332来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 微信小程序正式公测, 张小龙全面阐述小程序,定档1月9日上线(附90分钟演讲全文) ... 前言:新人第一坑,跳坑指南:修改后,必须保存:ctrl+S: 1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434678461 2:简易教

微信小程序——2、配置json文件

配置文件详解 主配置文件app.json 主配置文件位于主目录中,用于进行全局配置.包括页面文件的路径.窗口表现.设置网络超时时间.设置多tab等 下面通过微信最初自带小程序来学习 { "pages":[ "pages/index/index", "pages/logs/logs" ], "window":{ "backgroundTextStyle":"light", "na

.NET CORE MYSQL 微信小程序 HTTPS 随笔

今天一天都没有撸码,没写BUG没改BUG,整一天都在弄那个微信小程序的配置了..唉.. 一个项目用的微信小程序,界面做出来了,就等着AJAX取网络数据后再显示到界面上了,查了下文档, 小程序取网络数据的那个网址必须是HTTPS的,经过备案的 自己电脑上之前已经做好一个简单的示例了,.NET CORE + MYSQL的,找了个WIN2008的服务器传上去测试,结果服务器上啥环境都没有.又得自己重新装一次,直接在服务器上网下载MYSQL,.NET CORE SDK,装好后上传发布后的网站,CMD中运

微信小程序-B站:wxml和wxss文件

WXML WXML(WeiXin Markup Language)是微信的一套标签语言,结合基础组件.事件系统,可以构建出页面的结构. (小安娜:好像很厉害的样子,那基础组件.事件系统是什么?感觉更厉害,因为必须结合它们.),基础组件类似HTML中的标签,事件系统是JavaScript中的事件,可处理逻辑反应到界面上:wxml只是一个文件格式,如果没有组件和事件它没任何用处,又如果把组件.事件写在txt文档里面也没任何用处,所以没有谁更厉害,相辅相成的关系.(小安娜:嗦嘎,就好像ap.ad.ad