微信小プログラムの技巧ショーの内容展示、ファイルの符号化問題をアップロードします。


ショーの内容展示
WeChatウィジェットの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);
    }
  });
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。