微信小程序坑集


1. 微信小程序不支持cookie

  1. 使用Reids存儲session

  2. 使用3rd_session建立會話關系

 

2. 微信小程序post請求,服務端獲取不到參數

  1. 需要把Content-type改成‘application/x-www-form-urlencoded’才可以正常獲取

  2. 修改Content-type后,請求參數不會自動序列化,需要使用JSON.stringify轉化字符串才可以正常請求

客戶端 

 wx.request({
                        url: app.requestUrl("Index/answer"),
                        method: 'POST',
                        data: {
                            answer: JSON.stringify(needData),
                        },
                        header: { "content-type": "application/x-www-form-urlencoded" },
                        dataType: "json",
                        success: function(res) {

                        }

                    });

服務端

    public function answer(){
        $answer=I('post.answer');
        $answer=htmlspecialchars_decode($answer);
        $answer=json_decode($answer);
    }

 

3. 微信小程序wx.request會自動對響應數據執行JSON.parse,JSON.parse執行失敗不會拋出錯誤或警告(php文件為BOM編碼時,響應數據會帶上編碼符。因為wx.request沒有做trim處理,所以JSON.parse會執行失敗,返回json字符串!該問題很難追蹤,因此糾結了一天)

 

 

4. 有些手機不支持Object.assign方法,如果使用了該方法會出現莫名其妙的報錯(並不會提示Object.assign is not function,而是導致調用了Object.assign方法的方法不能被調用)!

 解決方法:直接寫一個合並對象的方法!

function assignObject(o, n) {
    for (var p in n) {
        if (n.hasOwnProperty(p) && (!o.hasOwnProperty(p)))
            o[p] = n[p];
    }
}

 

 5. 不支持在對象使用解構表達式

var arr=[1,2,3,4,5];
var obj={
    node:123,
    name:"huang"
};
var newarr=[...arr,6,7,8];  // 可以解析 var newobj={...obj,age:12};   // 無法解析,報錯 

 

6. 服務器使用https協議時,外鏈也需要使用https協議,否則ios系統不支持(android是支持的) 

  解決方法: 把外鏈的http協議轉換成https協議(外鏈需要支持https協議)

 

7. 自己寫的遮罩層無法遮蓋 textarea組件placeholder

  解決方法:彈出遮罩層的時候把textarea組件隱藏,關閉遮罩后重新顯示textarea組件

 

8. picker-view組件無法滾動(當picker-view處於display:none狀態,去修改picker-view的value會導致組件卡主無法滾動)

  解決方法:修改picker-view組件的value屬性的前picker-view必須處於正常(display:block)狀態

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM