微信小程序技巧之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 相关文章推荐
获取非最后一列td值并将title设为该值的方法
Oct 30 Javascript
jquery左边浮动到一定位置时显示返回顶部按钮
Jun 05 Javascript
浅析Node.js的Stream模块中的Readable对象
Jul 29 Javascript
如何实现移动端浏览器不显示 pc 端的广告
Oct 15 Javascript
JavaScript中Boolean对象的属性解析
Oct 21 Javascript
javascript实现平滑无缝滚动
Aug 09 Javascript
Angular2 路由问题修复详解
Mar 01 Javascript
JavaScript 用fetch 实现异步下载文件功能
Jul 21 Javascript
vue init webpack myproject构建项目 ip不能访问的解决方法
Mar 20 Javascript
JS代码实现电脑配置检测功能
Mar 21 Javascript
angularJS自定义directive之带参方法传递详解
Oct 09 Javascript
Vue+Koa2 打包后进行线上部署的教程详解
Jul 31 Javascript
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
同台服务器使用缓存APC效率高于Memcached的演示代码
2010/02/16 PHP
PHP register_shutdown_function函数的深入解析
2013/06/03 PHP
php绘制圆形的方法
2015/01/24 PHP
PHP生成唯一订单号
2015/07/05 PHP
PHP判断一个数组是另一个数组子集的方法详解
2017/07/31 PHP
thinkPHP5框架分页样式类完整示例
2018/09/01 PHP
Yii框架组件的事件机制原理与用法分析
2020/04/07 PHP
Javascript开发包大全整理
2006/12/22 Javascript
js 纯数字不重复排列的另类方法
2010/07/17 Javascript
jquery提交form表单简单示例分享
2014/03/03 Javascript
jQuery的load()方法及其回调函数用法实例
2015/03/25 Javascript
JS两种类型的表单提交方法实例分析
2016/11/28 Javascript
Bootstrap CSS布局之表单
2016/12/17 Javascript
JS正则表达式验证中文字符
2017/05/08 Javascript
JavaScript Dom 绑定事件操作实例详解
2019/10/02 Javascript
Vue中常用rules校验规则(实例代码)
2019/11/14 Javascript
uni-app 组件里面获取元素宽高的实现
2019/12/27 Javascript
原生JavaScript实现幻灯片效果
2021/02/19 Javascript
[00:27]DOTA2战队VP、Secret贺新春
2018/02/11 DOTA
Python实现将目录中TXT合并成一个大TXT文件的方法
2015/07/15 Python
Apache如何部署django项目
2017/05/21 Python
Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】
2017/09/28 Python
Python编程django实现同一个ip十分钟内只能注册一次
2017/11/03 Python
PyQt5实现拖放功能
2018/04/25 Python
django反向解析URL和URL命名空间的方法
2018/06/05 Python
Django之使用内置函数和celery发邮件的方法示例
2019/09/16 Python
python3+opencv生成不规则黑白mask实例
2020/02/19 Python
解决python中0x80072ee2错误的方法
2020/07/19 Python
常见的软件开发流程有哪些
2015/11/14 面试题
校园广播稿500字
2014/02/04 职场文书
班风学风建设方案
2014/05/06 职场文书
退休欢送会致辞
2015/07/31 职场文书
重阳节主题班会
2015/08/17 职场文书
周末问候语大全
2015/11/10 职场文书
关于springboot 配置date字段返回时间戳的问题
2021/07/25 Java/Android
python 安全地删除列表元素的方法
2022/03/16 Python