可能这个不只是微信小程序的坑,但是我遇到了,就记录一下,希望对看到这篇文章的你有所帮助!
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()
});