微信小程序坑集

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)状态

  

  

posted @ 2017-01-12 12:03 Ricky_boke 阅读(...) 评论(...) 编辑 收藏