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() {},

})

相关推荐
Elcker2 小时前
YnuoAgent(依诺):一个 npm 包,跑起属于自己的 AI 研发平台
前端·人工智能·npm
计算机魔术师2 小时前
发现2天,修复2个月:AI挖穿PHP后,卡兹克讲透攻防时间差
前端
风骏时光牛马2 小时前
测试标题001
前端
IT_陈寒3 小时前
Java性能优化完全指南
前端·人工智能·后端
电子IT笔记3 小时前
对接群晖NAS,上传和删除踩坑记录
前端·后端
计算机魔术师3 小时前
半年前说不缺钱,半年后150亿美元超募
前端
用户5708462574403 小时前
自动化发布器里最贵的 Bug:返回成功,但什么都没发生
前端
爱吃馒头不吃辣3 小时前
加一道题,改一天代码:题库即数据的降维打击
前端·架构
aiks_yuan3 小时前
Requestly规则使用技巧:前端联调、接口Mock与网络请求调试实战
前端
程序员老赵3 小时前
Docker 部署 MaxKB:轻松搭建企业级智能体平台
前端·docker·agent