微信開發常見的問題總結

來源:互聯網
上載者:User
本篇文章講述了開發常見的問題,大家對開發常見問題不瞭解的話或者對開發常見問題感興趣的話那麼我們就一起來看看本篇文章吧, 好了廢話少說進入正題吧

開發常見的問題總結

1.由於小程式wx.request()方法是非同步,在app.js執行ajax後,各分頁載入app.js的全域資料時,無法按順序載入。例:

//app.jsApp({  ajax:function(){    let that = this;    wx.request({      url: 'https://a.com/url.php',      method: 'GET',      success: function(e){        that.data = 123;      }    })  };})//content.jslet app = getApp()Page({  getData: function(){;    app.ajax();    console.log(app.data); //undefined  }})


解決方案,使用Promise非同步函數:

//app.jsApp({  ajax:function(){    let that = this;    let promise = new Promise(function(resolve, reject){      wx.request({        url: 'https://a.com/url.php',        method: 'GET',        success: function(e){          that.data = 123;          resolve();        }      })    });  };})//content.jslet app = getApp()Page({  getData: function(){;    app.ajax().then(()=>{      console.log(app.data); //123    });  }})

2.圖片只能擷取原始寬高,無法擷取現有寬高。不過image標籤封裝了mode屬性,可以根據需求自行設定。

3.每個image標籤底部有一條透明間隔,非padding,非margin。在圖片前面做遮罩層時可能會被坑。

4.網路請求必須部署https

5.配置tabBar時,list參數中的pagePath參數至少需要包含app.json裡pages數組中的第一個路徑,否則會導致tabBar不顯示。

6.tabBar跳轉時無法帶參數,解決方案:

//search.jsvar app = getApp();Page({  confirm: function(e){    //擷取資料,添加到全域    let val = e.detail.value;    app.searchWord = val;    this.jump();  },  jump: function(){    //跳轉tabBar    wx.switchTab({      url: '../index/index',    });  },});  //index.jsvar app = getApp();Page({  onShow: function(e){    //擷取全域資料    let val = app.searchWord;  }});//需要傳遞參數的頁面在跳轉前將資料添加到app.js裡。需要接受參數的頁面在onShow方法接受之前添加到app.js的資料。

7.小程式wx.request()方法請求的url必須是https開頭

8.wx.request()使用post方法請求時,還需要加上header,header[content-type]值為application/x-www-form-urlencoded。例:


wx.request({  url: 'https://a.com/url.php',  data: {message: 123},  method: 'POST',  header: {    'content-type': 'application/x-www-form-urlencoded'  },  success: function(e){    console.log(e)  }});


9.小程式無法載入html標籤,同時資料渲染也無法渲染wxml標籤(<view></view>等),可以使用wxParse.js來處理相關資料。

10.安卓無法渲染wx.request()請求的資料。

檢測返回的資料是否有BOM頭(3個字元的空白)。安卓的wx.request解析不會跳過BOM頭,導致資料返回的是字串,而不是對象或者數組。

例:

返回的資料是:(3個字元的空白){a:1, b:2}

解析的資料是:'{a:1, b:2}'(字串),而不是{a:1, b:2}(對象)

由於不是對象,模板渲染之類會無法正常進行。解決方案,後台返回資料前去掉BOM頭就行。如果後台不會去BOM頭,可以在前端去除,但是wx.request如果dataType預設,會預設為json並自動解析,導致無法去除BOM頭。

解決方案:

wx.request({  url: url,  method: 'GET',  dataType: 'txt',  success: function(e){    let json = e.data.trim();    let arr = JSON.parse(json);  }});

dataType改為json以外的格式,避免小程式自動解析json字串,然後對返回的資料用 trim() 方法去掉空白,最後解析json字串就行。

11.調試時多行省略(-webkit-line-clamp)正常,發布時多行省略無效。

解決方案:如果不想重新審核,讓後台截斷就好

12.單次setData長度有限制:1048576

appservice:16 invokeWebviewMethod 資料轉送長度為 2432088 已經超過最大長度 1048576

在用富文本的時候容易發生,特別是圖片為base64且像素特別大的時候

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.