zoukankan      html  css  js  c++  java
  • 微信小程序使用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"
    

      

  • 相关阅读:
    [译]GLUT教程
    [译]GLUT教程
    [译]GLUT教程
    [译]GLUT教程
    [译]GLUT教程
    [译]GLUT教程
    [译]GLUT教程
    表单
    列表、表格与媒体元素
    HTML5基础
  • 原文地址:https://www.cnblogs.com/saving/p/9943554.html
Copyright © 2011-2022 走看看