微信小程序 開發(fā)中遇到問題總結(jié)
微信小程序 開發(fā)中遇到問題總結(jié)
1.由于小程序wx.request()方法是異步的,在app.js執(zhí)行ajax后,各分頁加載app.js的全局?jǐn)?shù)據(jù)時(shí),無法按順序加載。例:
//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異步函數(shù):
//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.圖片只能獲取原始寬高,無法獲取現(xiàn)有寬高。不過image標(biāo)簽封裝了mode屬性,可以根據(jù)需求自行設(shè)置。
3.每個(gè)image標(biāo)簽底部有一條透明間隔,非padding,非margin。在圖片前面做遮罩層時(shí)可能會(huì)被坑。
4.網(wǎng)絡(luò)請(qǐng)求必須部署https
5.配置tabBar時(shí),list參數(shù)中的pagePath參數(shù)至少需要包含app.json里pages數(shù)組中的第一個(gè)路徑,否則會(huì)導(dǎo)致tabBar不顯示。
6.tabBar跳轉(zhuǎn)時(shí)無法帶參數(shù),解決方法:
//search.js var app = getApp(); Page({ confirm: function(e){ //獲取數(shù)據(jù),添加到全局 let val = e.detail.value; app.searchWord = val; this.jump(); }, jump: function(){ //跳轉(zhuǎn)tabBar wx.switchTab({ url: '../index/index', }); }, }); //index.js var app = getApp(); Page({ onShow: function(e){ //獲取全局?jǐn)?shù)據(jù) let val = app.searchWord; } }); //需要傳遞參數(shù)的頁面在跳轉(zhuǎn)前將數(shù)據(jù)添加到app.js里。需要接受參數(shù)的頁面在onShow方法接受之前添加到app.js的數(shù)據(jù)。
7.小程序wx.request()方法請(qǐng)求的url必須是https開頭
8.wx.request()使用post方法請(qǐng)求時(shí),還需要加上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標(biāo)簽,同時(shí)數(shù)據(jù)渲染也無法渲染wxml標(biāo)簽(<view></view>等),可以使用wxParse.js來處理相關(guān)數(shù)據(jù)。
10.安卓無法渲染wx.request()請(qǐng)求的數(shù)據(jù)。
檢測返回的數(shù)據(jù)是否有BOM頭(3個(gè)字符的空白)。安卓的wx.request解析不會(huì)跳過BOM頭,導(dǎo)致數(shù)據(jù)返回的是字符串,而不是對(duì)象或者數(shù)組。
例:
返回的數(shù)據(jù)是:(3個(gè)字符的空白){a:1, b:2}
解析的數(shù)據(jù)是:'{a:1, b:2}'(字符串),而不是{a:1, b:2}(對(duì)象)
由于不是對(duì)象,模板渲染之類會(huì)無法正常進(jìn)行。解決方法,后臺(tái)返回?cái)?shù)據(jù)前去掉BOM頭就行。如果后臺(tái)不會(huì)去BOM頭,可以在前端去除,但是wx.request如果dataType缺省,會(huì)默認(rèn)為json并自動(dòng)解析,導(dǎo)致無法去除BOM頭。
解決方案:
wx.request({ url: url, method: 'GET', dataType: 'txt', success: function(e){ let json = e.data.trim(); let arr = JSON.parse(json); } });
dataType改為json以外的格式,避免小程序自動(dòng)解析json字符串,然后對(duì)返回的數(shù)據(jù)用 trim() 方法去掉空白,最后解析json字符串就行。
11.調(diào)試時(shí)多行省略(-webkit-line-clamp)正常,發(fā)布時(shí)多行省略無效。
解決方案:如果不想重新審核,讓后臺(tái)截?cái)嗑秃?/p>
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- 微信小程序 二維碼canvas繪制實(shí)例詳解
- 微信小程序左滑刪除效果的實(shí)現(xiàn)代碼
- 微信小程序 基礎(chǔ)知識(shí)css樣式media標(biāo)簽
- 微信小程序 http請(qǐng)求封裝詳解及實(shí)例代碼
- 微信小程序中實(shí)現(xiàn)一對(duì)多發(fā)消息詳解及實(shí)例代碼
- 微信小程序 Nginx環(huán)境配置詳細(xì)介紹
- 微信小程序小組件 基于Canvas實(shí)現(xiàn)直播點(diǎn)贊氣泡效果
- 微信小程序 詳解頁面跳轉(zhuǎn)與返回并回傳數(shù)據(jù)
- 微信小程序 PHP生成帶參數(shù)二維碼
相關(guān)文章
Java解決No enclosing instance of type PrintListFromTailToHead
這篇文章主要介紹了Java解決No enclosing instance of type PrintListFromTailToHead is accessible問題的兩種方案的相關(guān)資料,需要的朋友可以參考下2016-07-07關(guān)于注解FeignClient的使用規(guī)范
這篇文章主要介紹了關(guān)于注解FeignClient的使用規(guī)范,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03SpringBoot集成quartz實(shí)現(xiàn)定時(shí)任務(wù)
這篇文章主要介紹了如何使用SpringBoot整合Quartz,并將定時(shí)任務(wù)寫入庫中(持久化存儲(chǔ)),還可以任意對(duì)定時(shí)任務(wù)進(jìn)行如刪除、暫停、恢復(fù)等操作,需要的可以了解下2023-09-09ExpressionUtil工具類的應(yīng)用實(shí)例
這篇文章主要給大家介紹了關(guān)于ExpressionUtil工具類的應(yīng)用實(shí)例,常用的工具類有很多,這是其中一個(gè),了解基本的API可以幫助我們更好的開發(fā),文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-04-04intellij idea中spring boot properties文件不能自動(dòng)提示問題解決
這篇文章主要介紹了intellij idea中spring boot properties文件不能自動(dòng)提示問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02