微信小程序技巧之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 相关文章推荐
Javascript的闭包
Dec 31 Javascript
解决jquery版本冲突的有效方法
Sep 02 Javascript
深入理解JavaScript系列(37):设计模式之享元模式详解
Mar 04 Javascript
javascript函数的四种调用模式
Jan 08 Javascript
javascript定时器取消定时器及优化方法
Jul 08 Javascript
关于ES6箭头函数中的this问题
Feb 27 Javascript
Vue开发之封装分页组件与使用示例
Apr 25 Javascript
Vue基于vuex、axios拦截器实现loading效果及axios的安装配置
Apr 26 Javascript
vue使用websocket的方法实例分析
Jun 22 Javascript
微信小程序image图片加载完成监听
Aug 31 Javascript
Vue项目前后端联调(使用proxyTable实现跨域方式)
Jul 18 Javascript
three.js 将图片马赛克化的示例代码
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
php邮箱地址正则表达式验证
2015/11/13 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
W3C Group的JavaScript1.8 新特性介绍
2009/05/19 Javascript
Jquery实战_读书笔记2 选择器
2010/01/22 Javascript
js 遍历对象的属性的代码
2011/12/29 Javascript
javascript弹出页面回传值的方法
2015/01/28 Javascript
浅谈JavaScript的事件
2015/02/27 Javascript
轻松搞定jQuery.noConflict()
2016/02/15 Javascript
JavaScript sort数组排序方法和自我实现排序方法小结
2016/06/06 Javascript
通过sails和阿里大于实现短信验证
2017/01/04 Javascript
Express进阶之log4js实用入门指南
2018/02/10 Javascript
详解AngularJS 过滤器的使用
2018/06/02 Javascript
vue3.0 CLI - 2.1 -  component 组件入门教程
2018/09/14 Javascript
koa大型web项目中使用路由装饰器的方法示例
2019/04/02 Javascript
VUE 项目在IE11白屏报错 SCRIPT1002: 语法错误的解决
2020/09/27 Javascript
[02:09:59]火猫TV国士无双dota2 6.82版本详解(下)
2014/09/29 DOTA
python实现简易云音乐播放器
2018/01/04 Python
对python中raw_input()和input()的用法详解
2018/04/22 Python
Python3日期与时间戳转换的几种方法详解
2019/06/04 Python
解决pycharm下os.system执行命令返回有中文乱码的问题
2019/07/07 Python
python requests使用socks5的例子
2019/07/25 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
2019/08/09 Python
Python3操作读写CSV文件使用包过程解析
2020/04/10 Python
如何向scrapy中的spider传递参数的几种方法
2020/11/18 Python
Python lxml库的简单介绍及基本使用讲解
2020/12/22 Python
HTML5自定义视频播放器源码
2020/01/06 HTML / CSS
介绍一下Linux内核的排队自旋锁
2014/08/27 面试题
中学教师请假制度
2014/02/03 职场文书
电焊工工作岗位职责
2014/02/06 职场文书
初中高效课堂实施方案
2014/02/26 职场文书
岗位职责说明书模板
2014/07/30 职场文书
医院党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
幼儿园五一劳动节活动总结
2015/02/09 职场文书
公司业务员管理制度
2015/08/05 职场文书
门卫管理制度范本
2015/08/05 职场文书
《失物招领》教学反思
2016/02/20 职场文书