第一次做微信小程序开发,感觉问题很多,就写写笔记,给想学的朋友们看一下,有不对的地方也希望有大佬能帮忙指点一下
简单的我就不多说了,文档上面都有,学着看文档也是一种学习,下面就说一下开发中的问题
先讲一下request请求,比较简单
var that =
this //访问之前记得加这个
wx.request({
url:
'',
//请求地址
data: { OrderdetailsVoArr: clist, usersAddressId: that.data.address.usersAddressId}, //不用可以不写
header: {
//请求头
"Content-Type":
"applciation/json"
},
method:
"GET",
//get为默认方法/POST
success:
function (res) {
that.setData({
//如果在sucess直接写this就变成了wx.request()的this了.必须为getdata函数的this,不然无法重置调用函数
imgUrls: res.data.list //这里的list是指你返回的json数据,后面还可以接着点,直到拿到想要的数据,
})
},
fail:
function (err) { },
//请求失败
complete:
function () { }
//请求完成后执行的函数
})
这里有个问题,就是微信访问服务器与浏览器不同,每次访问都是一个新的请求,所以会导致每次访问后台的sessionID不同,session中的东西就会拿不到
所以我们需要让后台将每次生产的sessionID 告诉我们,然后放到微信缓存中
wx.setStorageSync(
'sessionID ', res.data.
sessionID );
要用的时候记得拿出来,我用的是同步,异步可能会导致用的时候数据没拿到,要用异步的话可以去看看官方文档,上面都有,我就不多说了
var
sessionID = wx.getStorageSync(
'sessionID ')
if (
sessionID ) {
this.setData({
sessionID :
sessionID });
}
wx.request({
url:
'',
//请求地址
header: {
//请求头
"Content-Type":
"applciation/json",
//告诉服务器sessionID
'Cookie':
'JSESSIONID=' + that.data.sessionId
},
做登陆的时候碰到一个比较坑的,就是登陆成功后无法跳转的页面,我刚开始是这样写的
wx.redirectTo({
url: '../user/user'
})
原来是因为在app.json中这样写了
{
"pagePath":
"page/component/user/user",
"iconPath":
"image/42.png",
"selectedIconPath":
"image/41.png",
"text":
"我的"
}
所以只能这样访问
wx.switchTab({
url:
'../user/user'
})
做购物车的时候当时在data里面定义了一个OrderdetailsVo
data: {
OrderdetailsVo:{
productId:
'',
productNum:
'',
},
}
但是不知道为什么拿到的数据会被最后一条覆盖掉,最后没办法,只能用老办法了
var that = this;
var clist = new Array();
function OrderdetailsVo(productId, productNum) {
this.productId = productId,
this.productNum = productNum
}
for (var i =
0; i < that.data.carts.length; i++) {
if (that.data.carts[i].selected) {
var orderdetails = new OrderdetailsVo(that.data.carts[i].product.productId, that.data.carts[i].productCount)
clist.push(orderdetails)
}
}