微信小程序技巧之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 相关文章推荐
jquery 模式对话框终极版实现代码
Sep 28 Javascript
放弃用你的InnerHTML来输出HTML吧 jQuery Tmpl不详细讲解
Apr 20 Javascript
javasctipt如何显示几分钟前、几天前等
Apr 30 Javascript
JavaScript模拟实现键盘打字效果
Jun 29 Javascript
基于jQuery实现搜索关键字自动匹配功能
Mar 26 Javascript
js HTML5手机刮刮乐代码
Sep 29 Javascript
基于Bootstrap和jQuery构建前端分页工具实例代码
Nov 23 Javascript
最好用的Bootstrap fileinput.js文件上传组件
Dec 12 Javascript
微信小程序wx.previewImage预览图片实例详解
Dec 07 Javascript
vue 循环加载数据并获取第一条记录的方法
Sep 26 Javascript
vue-router 中 meta的用法详解
Nov 01 Javascript
easyUI 实现的后台分页与前台显示功能示例
Jun 01 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
改变Apache端口等配置修改方法
2008/06/05 PHP
基于php冒泡排序算法的深入理解
2013/06/09 PHP
php使用exec shell命令注入的方法讲解
2013/11/12 PHP
laravel框架关于搜索功能的实现
2018/03/15 PHP
Javascript:为input设置readOnly属性(示例讲解)
2013/12/25 Javascript
编程语言JavaScript简介
2014/10/16 Javascript
JavaScript实现常用二级省市级联下拉列表的方法
2015/03/25 Javascript
jquery validate和jquery form 插件组合实现验证表单后AJAX提交
2015/08/26 Javascript
JavaScript结合Bootstrap仿微信后台多图文界面管理
2016/07/22 Javascript
JQ选择器_选择同类元素的第N个子元素的实现方法
2016/09/08 Javascript
基于JavaScript实现拖动滑块效果
2017/02/16 Javascript
JavaScript实现的选择排序算法实例分析
2017/04/14 Javascript
mui开发中获取单选按钮、复选框的值(实例讲解)
2017/07/24 Javascript
javascript简写常用的12个技巧(可以大大减少你的js代码量)
2020/03/28 Javascript
利用HBuilder打包前端开发webapp为apk的方法
2017/11/13 Javascript
JavaScript实现快速排序的方法分析
2018/01/10 Javascript
原生JS实现简单的无缝自动轮播效果
2018/09/26 Javascript
在Vue项目中使用snapshot测试的具体使用
2019/04/16 Javascript
js绘制一条直线并旋转45度
2020/08/21 Javascript
vue实现单一筛选、删除筛选条件
2020/10/26 Javascript
Python  __getattr__与__setattr__使用方法
2008/09/06 Python
python实现对象列表根据某个属性排序的方法详解
2019/06/11 Python
python3.6编写的单元测试示例
2019/08/17 Python
Python Flask上下文管理机制实例解析
2020/03/16 Python
django ListView的使用 ListView中获取url中的参数值方式
2020/03/27 Python
Python安装第三方库攻略(pip和Anaconda)
2020/10/15 Python
英国领先的在线旅游和休闲零售商:lastminute.com
2019/01/23 全球购物
写给学生的新学期寄语
2014/01/18 职场文书
阳光体育活动方案
2014/02/16 职场文书
艺术节开幕词
2015/01/28 职场文书
保险公司客户经理岗位职责
2015/04/09 职场文书
治庸问责工作总结
2015/08/11 职场文书
小学课改工作总结
2015/08/13 职场文书
家庭教育教师培训学习体会
2016/01/14 职场文书
八年级作文之友情
2019/11/25 职场文书
Win11任务栏太宽了怎么办?一招解决Win11任务栏太宽问题
2021/11/21 数码科技