微信小程序技巧之show内容展示,上传文件编码问题


Posted in Javascript onJanuary 23, 2017

show内容展示

尝试用微信小程序的template组件实现。同时,尝试页面间转跳时传参,在目标页面引入模板文件实现 写的更少,做的更多 篇幅有限详细代码此处省略

<view class="show-warp">
    <block wx:for="{{discuss}}" wx:key="index">
      <template is="discuss" data="{{item}}"></template>
      <template is="discuss-reply" data="{{item}}"></template>
      <template is="discuss-more" data="{{item}}"></template>
    </block>
  </view>
Page({
    data: {
      discuss: [],
      petAge: 0,
      reply: false,
      height: 20
    },
    onLoad: function(){
      util.dataList.call(this, {
        cb: util.petAge
      });
    }  
  });
  /*
   * 部分公共逻辑页代码
   */
  function list(option) {
    var opt = {
      url: option.url || 'https://api.zg5v.com/index.php/index/show/showindex',
      data: option.data || {
        uid: 148,
        num: option.pageNum || 0
      },
      update: option.update || false,
      cb: option.cb || false,
      func: option.func || false
    };
    // 数据列表
    var showList = [];
    var objDa = [];
    this.data.replyListArr = [];
    // 保存/修改 this指向
    var self = this;
    ajax({
      url: opt.url,
      data: opt.data,
      cb: function(res) {
        showList = res.data.data;
        // 统一格式
        if (!Array.isArray(showList) &&
          typeof showList === 'object') {
          // 计算评论发布时间
          showList.pl.forEach(function(e, i) {
            e.cp_chongbirth = e.cp_addtime * 1000;
            e.replyTime = opt.cb(e.cp_chongbirth, true);
          }, showList.pl);
          objDa.push(showList);
        } else {
          objDa = showList;
        }
        // 更新评论列表
        if (opt.update) {
          let da = res.data.data.pl,
            plDa = self.data.discuss,
            i = 0,
            j = 0,
            len = da.length,
            jLen = plDa.length;
          for (; j < jLen; j++) {
            for (; i < len; i++) {
              if (plDa[j].pl.length > 0) {
                plDa[j].pl.push(da[i]);
              }
            }
          }
          objDa = plDa;
          opt.update = !opt.update;
        }
        if (res.data.status === 1) {
          for (var i = 0, len = objDa.length; i < len; i++) {
            if (opt.cb && typeof opt.cb === 'function') {
              // 计算宠物年龄
              objDa[i].petAge = opt.cb(objDa[i].cp_chongbir ||
                objDa[i].cp_chongbirth);
            }
          }
          self.setData({
            discuss: objDa
          });
        } else if (res.data.status === 2 || res.data.status === 0) {
          self.onLoad();
        }
        objDa = [];
      }
    });
  }

上传文件编码问题(*)

header 里的数据在真机预览的时候是无效的。那就尝试改变编码进行传输,在uploadFile 的参数中加入

header: {“chartset”:”utf-8”}

或是

header: {"content-type":'application/x-www-form-urlencoded'}

需要改到 formData 中,尝试将编码数据加入formData,但仅仅传输了数据,并没有改变编码.header有问题暂时找不到解决方案,所以编码操作暂时只能手动进行.在javascript 中,字符串编码函数是 encodeURI, 在小程序中尝试可以使用。所以,将代码改为如下: 

wx.uploadFile({
    url: 'Upload image server path (Must be secure https)',
    // 待上传的图片,由 chooseImage获得
    filePath: tempFilePaths[0],
    name: 'file',
    // HTTP 请求中其他额外的 form data
    formData: {
      // city: '太原',
      city: encodeURI('太原'),
      // name: 'taiyan',
      name: encodeURI('taiyan') // 名称
    }, 
    success: function(res) {
      console.log("success", res);
    },
    fail: function(res) {
      console.log("fail", res);
    }
  });

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Gird组件 Part-3:范例RSSFeed Viewer
Mar 10 Javascript
jquery插件制作教程 txtHover
Aug 17 Javascript
jquery实现图片裁剪思路及实现
Aug 16 Javascript
使用Node.js实现一个简单的FastCGI服务器实例
Jun 09 Javascript
AngularJS入门教程之迭代器过滤详解
Aug 18 Javascript
JS简单去除数组中重复项的方法
Sep 13 Javascript
localStorage实现便签小程序
Nov 28 Javascript
ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
Dec 16 Javascript
老生常谈jquery中detach()和remove()的区别
Mar 02 Javascript
vue translate peoject实现在线翻译功能【新手必看】
Jun 07 Javascript
详解在React项目中安装并使用Less(用法总结)
Mar 18 Javascript
vue实现广告栏上下滚动效果
Nov 26 Vue.js
Javascript同时声明一连串(多个)变量的方法
Jan 23 #Javascript
jQuery点击导航栏选中更换样式的实现代码
Jan 23 #Javascript
jQuery弹出层插件popShow(改进版)用法示例
Jan 23 #Javascript
JS判断指定dom元素是否在屏幕内的方法实例
Jan 23 #Javascript
jQuery弹出层插件popShow用法示例
Jan 23 #Javascript
Javascript中for循环语句的几种写法总结对比
Jan 23 #Javascript
基于jQuery插件jqzoom实现的图片放大镜效果示例
Jan 23 #Javascript
You might like
星际流派综述
2020/03/04 星际争霸
要会喝咖啡也要会知道咖啡豆
2021/03/03 咖啡文化
php中比较简单的导入phpmyadmin生成的sql文件的方法
2011/06/28 PHP
VB中的RasEnumConnections函数返回632错误解决方法
2014/07/29 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
2017/08/28 PHP
jquery对dom的操作常用方法整理
2013/06/25 Javascript
javascript随机之洗牌算法深入分析
2014/06/07 Javascript
javascript实现图片自动和可控的轮播切换特效
2015/04/13 Javascript
JavaScript监听文本框回车事件并过滤文本框空格的方法
2015/04/16 Javascript
简介AngularJS的视图功能应用
2015/06/17 Javascript
Bootstrap警告框(Alert)插件使用方法
2017/03/21 Javascript
vue里input根据value改变背景色的实例
2018/09/29 Javascript
使用electron制作满屏心特效的示例代码
2018/11/27 Javascript
Vue.Draggable拖拽功能的配置使用方法
2020/07/29 Javascript
JS实现继承的几种常用方式示例
2019/06/22 Javascript
解析原来浏览器原生支持JS Base64编码解码
2019/08/12 Javascript
bootstrap实现tab选项卡切换
2020/08/09 Javascript
[59:00]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第一场 3月7日
2021/03/11 DOTA
用Python创建声明性迷你语言的教程
2015/04/13 Python
深入解析Python编程中super关键字的用法
2016/06/24 Python
Python中的字符串替换操作示例
2016/06/27 Python
win7上python2.7连接mysql数据库的方法
2017/01/14 Python
Python使用win32com实现的模拟浏览器功能示例
2017/07/13 Python
基于Python os模块常用命令介绍
2017/11/03 Python
Python编写Windows Service服务程序
2018/01/04 Python
Python 解决中文写入Excel时抛异常的问题
2018/05/03 Python
详解Django模版中加载静态文件配置方法
2019/07/21 Python
python文件操作的简单方法总结
2019/11/07 Python
Django中FilePathField字段的用法
2020/05/21 Python
html5页面结构_动力节点Java学院整理
2017/07/10 HTML / CSS
优秀党员转正的自我评价
2013/10/06 职场文书
初中同学聚会邀请函
2014/02/03 职场文书
供货协议书
2014/04/22 职场文书
2016年秋季新学期致辞
2015/07/30 职场文书
党务工作者主要事迹材料
2015/11/03 职场文书
你真的了解PHP中的引用符号(&)吗
2021/05/12 PHP