本篇文章講述了微信開發常見的問題,大家對微信開發常見問題不了解的話或對微信開發常見問題感興趣的話那麼我們就一起來看看本篇文章吧, 好了廢話少說進入正題吧
微信開發常見的問題總結
1.由於小程式wx.request()方法是異步的,在app.js執行ajax後,各分頁載入app.js的全域資料時,無法依序載入。範例:
//app.js App({ ajax:function(){ let that = this; wx.request({ url: 'https://a.com/url.php', method: 'GET', success: function(e){ that.data = 123; } }) }; }) //content.js let app = getApp() Page({ getData: function(){; app.ajax(); console.log(app.data); //undefined } })
解決方法,使用Promise非同步函數:
//app.js App({ 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.js let 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.js var 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.js var 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標籤(89c662c6f8b87e82add978948dc499d2< ;/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且像素特別大的時候
#以上就是本篇文章的所有內容,大家要是還不太了解的話,可以自己多實現兩邊就很容易掌握了哦!
相關推薦:
微信開發Token驗證失敗解決方法
以上是微信開發常見的問題總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!