h5/小程序直接读本地/在线的json文件数据

H5:

// 报名人数读取 js/huchao_enroll.json 的 shehui

$(function() {

function renderEnrollNums(total) {

var s = String(Math.max(0, Math.floor(Number(total) || 0)));

var html = '';

for (var i = 0; i < s.length; i++) {

html += '<span class="city-enroll-num">' + si + '</span>';

}

$('#enrollNums').html(html);

}

$.getJSON('js/huchao_enroll.json')

.done(function(data) {

renderEnrollNums(parseInt(data && data.shehui, 10) || 0);

})

.fail(function() {

$('#enrollNums').html('');

});

});

小程序:

// p

// 报名人数 = xxx.json 的 count(数值) + api/topic/1/s 的 total

var util = require('../../utils/util.js')

const DEFAULT_ENROLL_COUNT = 0

const REMOTE_ENROLL_JSON_URL =

'https://666.json'

const CARNIVAL_TOPIC_ID = 1

Page({

data: {

enrollCount: DEFAULT_ENROLL_COUNT,

enrollDigits: '0',

currentNav: 'hunhe',

},

goBack() {

wx.navigateBack()

},

onLoad(options) {

this._jsonCount = null

this._apiCount = null

this.applyEnrollCount(DEFAULT_ENROLL_COUNT)

this.loadRemoteEnrollCount()

this.loadTopicRegistrationStats()

},

/** 合并两处数据源后刷新展示 */

refreshEnrollSum() {

var j = this._jsonCount == null ? 0 : this._jsonCount

var a = this._apiCount == null ? 0 : this._apiCount

this.applyEnrollCount(j + a)

},

applyEnrollCount(n) {

const num = Math.max(0, parseInt(n, 10) || 0)

const digits = String(num).split('')

this.setData({ enrollCount: num, enrollDigits: digits })

},

loadRemoteEnrollCount() {

const url =

REMOTE_ENROLL_JSON_URL +

(REMOTE_ENROLL_JSON_URL.indexOf('?') >= 0 ? '&' : '?') +

'_t=' +

Date.now()

wx.request({

url,

method: 'GET',

success: (res) => {

if (res.statusCode !== 200 || res.data == null) {

this._jsonCount = 0

this.refreshEnrollSum()

return

}

let count = null

const d = res.data

if (typeof d === 'number') count = d

else if (typeof d === 'object' && d.count !== undefined) count = d.count

else if (typeof d === 'string') {

try {

const o = JSON.parse(d)

if (o && o.count !== undefined) count = o.count

} catch (e) {

count = parseInt(d, 10)

}

}

if (count !== null && count !== undefined && !isNaN(Number(count))) {

this._jsonCount = Math.max(0, parseInt(count, 10) || 0)

} else {

this._jsonCount = 0

}

this.refreshEnrollSum()

},

fail: () => {

this._jsonCount = 0

this.refreshEnrollSum()

},

})

},

loadTopicRegistrationStats() {

util

.getTopicRegistrationStats({ id: CARNIVAL_TOPIC_ID })

.then((r) => {

if (r && r.status && r.data && r.data.registration_total != null) {

var t = r.data.registration_total

this._apiCount = Math.max(0, parseInt(t, 10) || 0)

} else {

this._apiCount = 0

}

this.refreshEnrollSum()

})

.catch(() => {

this._apiCount = 0

this.refreshEnrollSum()

})

},

onNavTap(e) {

const nav = e.currentTarget.dataset.nav

if (nav) {

this.setData({ currentNav: nav })

}

},

onReady() {},

onShow() {},

onHide() {},

onUnload() {},

onPullDownRefresh() {},

onReachBottom() {},

onShareAppMessage() {},

})

相关推荐
微擎应用2 分钟前
小程序抽奖工具
小程序
IT_陈寒11 分钟前
Python装饰器把我坑惨了,原来这样用才不掉链子
前端·人工智能·后端
程序员爱钓鱼30 分钟前
Rust Associated Type关联类型详解:为Trait定义内部类型
前端·后端·rust
vortex539 分钟前
composer.json 可写场景下的利用手段
android·json·composer
zh_xuan1 小时前
个人主页左侧菜单支持分组,以及菜单显示和隐藏
前端·javascript·css
Ming_studying1 小时前
HTML + CSS + JavaScript实现可视化JSON工具:格式化、折叠、搜索与错误定位
javascript·css·html·json·数据可视化·web工具
Emily156853598704 小时前
Emerson 1C31129G03 Analog Input Module
java·开发语言·前端·plc·emerson·1c31129g03·input module
Ai-_Man5 小时前
希望大家能推荐一款软件,可以直接把文心生成的代码变流程图,提高办公效率
人工智能·ai·小程序·流程图
To_OC9 小时前
面试被问了三回三栏布局,这次我终于把 BFC 那层窗户纸捅破了
前端·css·面试
To_OC10 小时前
啃完 TS 工具类型我发现:Pick 和 Omit 原来就是一层窗户纸
前端·面试·typescript