【微信小程序开发遇到的那些坑】之——使用wx.uploadFile上传图片以后setData但图片不更新

可能这个不只是微信小程序的坑,但是我遇到了,就记录一下,希望对看到这篇文章的你有所帮助!


wx.uploadFile

并不会像wx.request一样会解析服务器传回的JSON对象!

所以当你打印输出res.data的时候并不是JSON格式的!

而且也不可以直接调用res.data.pojo!

所以在这里需要自己手动转JSON:

var data = JSON.parse(res.data);
console.log(data);

通过JSON.parse() 可以看到data存入了JSON对象。下文使用的也是data。 


 页面更新机制

因为我这个图片是做头像用的,在上传图片以后,服务器返回给我一个图片名。图片名是PHOTO+userid.png或.jpg

所以如果传的新图片和原图片是同类型的,那么setData中要给图片存入的信息就会是完全一样的:

//更新本页面数据
that.setData({
  [userphoto]: "这里写的是服务器网址的前缀:http://...." + data.pojo //这是图片名
});

那么这时候由于字符串根本就没有改变,所以微信小程序不会重新加载图片!

解决方法:在photo的网络地址后面加一个当前的时间传给服务器。这样就能保证每一次传的照片路径都是不一样的!

修改过后:

//更新本页面数据
that.setData({
  [userphoto]: "这里写的是服务器网址的前缀:http://...." + data.pojo + "?" + new Date()
});

谢谢你看到这里!写作仓促,有疏漏之处还请评论指正,共同探讨进步!


猜你喜欢

转载自blog.csdn.net/LimonSea/article/details/81775242