微信小程序使用 setData
去刷新数据值是 undefined
会报错,而经常我们后台api查询数据库记录为空,会传递 null
值,到了小程序上就转为了 undefined
由于我们需要显示没有数据时的文字信息,所以方法很多
- 要么就后端判断转为空数组,前端放心
setData
if ($matchs === null) {
$matchs = [];
}
echo json_encode([
'code' => 200,
'msg' => 'success',
'data' => $matchs,
]);
php
将结果变为空数组后,转json
后小程序获得也是空数组[]
,小程序在页面中通过{{matchs.length > 0}}
判断是否为空就行了
- 要么就返回错误码,前端专门判断然后用变量标示,根据变量是否显示数据为空的提示
举例:
后端返回
if (count($matchs) > 0) {
echo json_ecode([
'code' => 200,
'msg' => 'success',
'data' => $matchs,
]);
}else {
echo json_encode([
'code' => 404,
'msg' => 'not found',
]);
}
小程序
Page({
data: {
matchs: [],
isEmpty: false,
},
onLoad: function(){
wx.request({
url: this.data.reuqestUrl,
data: data,
success: function(jsonData){
if (jsonData.data.code == 200) {
this.setData({
matchs: jsonData.data.data
})
}else if(jsonData.data.code == 404) {
this.setData({
isEmpty: true
})
}
}
})
})
})
小程序页面再根据变量isEmpty
去判断是否显示空数据时候的提示
你也可以不用变量标识,直接通过设置结果集为空数组,这样看来还不如按上一个方法处理,其实都灵活多变的,选一个自己喜欢的就行
if (jsonData.data.code == 404) {
this.setData({
matchs: []
})
}
- 还有就是后端不管,就是一顿传,前端自己判断是否为
undefined
,然后再依照以上两个方式处理
if (typeof(jsonData.data.data) == "undefined") {
this.setData({
matchs: []
})
}