1. 真机调试获取不到数据
问题描述:在模拟器上可以获取到数据,但是在真机调试获取不到数据
解决:配置服务器request合法域名
并且一定要记得取消勾选不校验合法域名
2.服务器api返回的json字符串前面多了个空格
问题描述:真机能够获取到了数据,但是返回的json字符串前面多了个空格
原因:服务器有文件格式是utf-8 with bom ,应改成utf-8 无 bom,可用notepad++ 处理。且要记得不要用记事本修改服务器代码/配置文件,会改成有BOM底的。
解决:
法一:(从客户端解决,但是不治本,不推荐)
您可以判断 typeof res,如果是字符串则尝试 JSON.parse(res.replace(new RegExp('\ufeff', 'ig'), ''))
("\ufeff"表示非法字符)
法二:(从服务端解决,直接返回对象,治本)
修改服务器的默认打开为notepad++
在服务器里面根据最后修改时间判断哪些文件(包括配置文件)是经过windows的记事本修改的
并保存为utf-8无bom格式
3. 致命错误:Call to undefined function curl_init()
首先使用phpinfo()查看一下你的curl库有没有打开(ctrl+f,有出现curl enabled即可)。如果没有的话,编辑php.ini文件。
1.)phpinfo()里面没有curl,
mydomain/info.php
(ubuntu需要安装php7.0-curl,前提:Php为7.0版本)
=> apt-get update
=> sudo apt-get install curl libcurl3 libcurl3-dev php7.0-curl
=> 重启apahce服务器。
=> 解决
如果没enabled,就是没加载上
sudo find / -name 'php.ini' 找到php.ini 文件在哪里
1、Windows下的PHP开启curl库支持:
在/etc/php/7.0/apache2/php.ini
打开php.ini,将extension=php_curl.dll前的;号去掉。
2.保存之后还要重启apahce服务器。
4.新版授权方式
1. 用户授权
<button
wx:if="{{canIUse}}"
open-type="getUserInfo"
bindgetuserinfo="bindGetUserInfo"
hidden="{{loadingHidden}}"
class='onMiddle'
>
授权登录
</button>
<view wx:else>请升级微信版本</view>
data: {
canIUse: wx.canIUse('button.open-type.getUserInfo')
}
bindGetUserInfo(e) {
console.log(e.detail.userInfo);
}
2.判断是否授权
// 查看是否授权
wx.getSetting({
success(res) {
if (res.authSetting['scope.userInfo']) {
// 已经授权,可以直接调用 getUserInfo 获取头像昵称
wx.getUserInfo({
success(res) {
// console.log(res.userInfo)
that.setData({
userInfo: res.userInfo,
loadingHidden: true
});
}
})
}
}
})
5.小程序的token机制
问题描述:小程序能获取code, openid, secret, =>token,但是token老是校验失败,返回信息"Token过期或失效"?
原因:断点调试服务器,发现token没有发送到服务器上
解决:重构request方法,在header:{token} 携带token
自定义登陆态是服务器上将openid 与 session_key 关联起来的(进行hash算法)得到的唯一的token,在服务器中缓存下来并且返回给客户端
持续更新中~