微信小程序开发中遇到的问题

1,150 阅读2分钟

1. wxml中,div,img,br等标签不能使用

换行用\n,空格用\t,并且需要在 text标签中使用,直接在view中使用不生效

2.下拉刷新

enablePullDownRefresh Boolean false

在json文件中配置window对象的属性,开启

在 Page 中定义onPullDownRefresh处理函数,监听该页面用户下拉刷新事件

3.微信小程序的前后台通信必须通过https协议

开发环境下,可以勾选不校验安全域名及https证书,则可使用http请求。

4.微信小程序后端取不到session的问题

后端将用户登录后的用户信息(比如说用户id,用户名称)放入session中保存,之后在业务逻辑的开发中需要用到用户信息的时候就可以轻松又方便的从session中取到值。

每次微信小程序请求的时候都会改变sessionid,这就会导致在后面的请求中取不到登录时保存在session中的用户信息。 因为小程序不支持cookie,所以不能直接使用后台语言的session。

 在微信小程序开发中,由wx.request()发起的每次请求对于服务端来说都是不同的一次会话,微信小程序不会把session信息带回服务端,即对应服务端不同的session,由于项目中使用session保存用户信息所以导致后续请求相当于未登录的情况。    

微信对wx.request这个API做了修改,小程序发起的请求并不是直接请求我们的后台服务器,而是先通过微信的服务器再发送到我们的后台服务器,既然请求都是要通过微信的服务器发送到我们的服务器,那么我们的服务器也就无从识别请求的发起者了。因此,session在微信小程序的后台开发中是无法使用的

由于正常情况下,客户端向服务端发起请求时,session信息是存放在cookie中以请求头的方式带回给服务端的,而请求头中具体的信息就是session的id。而小程序中,用户的消息是通过腾讯服务器直接post的过来的,服务器是不带cookie过来的,

后台返还给前台sessionId, 小程序端登录后,把sessionId存入全局变量,app.js中是个存放全局变量的好地方。

... //登录后的逻辑处理
getApp().globalData.header.Cookie = 'JSESSIONID=' + _data.sessionId;

app.js中代码

 globalData:{
header:{'Cookie': ''} //这里还可以加入其它需要的请求头,比如'x-requested-with': 'XMLHttpRequest'表示ajax提交,微信的请求时不会带上这个的
},

小程序端请求时带上sessionId,后台代码从请求头里获取sessionid。

var header = getApp().globalData.header; //获取app.js中的请求头
  wx.request({
    url: "localhost:8080/xx/xx",
    header: header, //请求时带上这个请求头
    success:function(res){
  }
}