短信发送必须由后端发起,uni-app前端只能调用自有接口;倒计时需绑定页面生命周期、清除定时器并统一管理状态。uni-app里调用短信验证码接口,别直接写uni.request绝大多数人卡在这一步:以为只要发个 HTTP 请求就能触发短信,结果收不到码、没报错、控制台静悄悄。根本原因是------短信发送必须由后端发起,前端(包括 uni-app)只能调用你自己的服务端接口,不能直连短信平台的 API(鉴权密钥暴露风险极大,且各大平台明确禁止)。实操建议:在你的 Node.js / PHP / Java 后端写一个 /api/send-sms 接口,接收手机号、场景标识(如register或reset-pwd),校验频率、有效期、图形验证码(如有)后,再调用短信平台 SDK 发送uni-app 中只调用这个自有接口:uni.request({ url: 'https://your-api.com/api/send-sms', method: 'POST', data: { phone: '138xxxx1234' } })务必在后端做手机号格式校验、60秒防刷限制(用 Redis 存sms:138xxxx1234 + 过期时间)、错误日志记录------前端无法替代这些逻辑uni-app倒计时按钮状态管理,别用setInterval裸写常见错误现象:点击"获取验证码"后倒计时开始,但切到后台再切回来,倒计时卡住/跳变/重复执行;或者多个页面共用同一倒计时变量导致混乱。原因在于 setInterval 没有和页面生命周期绑定,也没做清除兜底。实操建议:把倒计时逻辑封装成可复用的 Composition 函数(Vue 3)或 mixin(Vue 2),用 onUnload 或 onHide 钩子主动 clearInterval使用 ref 存储剩余秒数,配合 watch 或计算属性更新按钮文案,避免手动操作 DOM按钮禁用状态必须同时控制:UI 禁用 + disabled 属性 + 点击事件内提前 return,三者缺一不可示例关键片段:let timer = null;const countDown = ref(60);const startCount = () => { if (timer) return; timer = setInterval(() => { countDown.value--; if (countDown.value <= 0) { clearInterval(timer); timer = null; countDown.value = 60; } }, 1000);};真机调试收不到短信?重点查这三处配置开发时用 HBuilderX 运行到手机,接口返回成功,但就是没收到短信------90% 是环境或配置问题,不是代码 bug。 通义听悟 阿里云通义听悟是聚焦音视频内容的工作学习AI助手,依托大模型,帮助用户记录、整理和分析音视频内容,体验用大模型做音视频笔记、整理会议记录。
相关推荐
小小测试开发19 小时前
安装 Python 3.10+梦想不只是梦与想20 小时前
Python 中的装饰器我叫唧唧波20 小时前
Python+AI 全栈学习笔记不会就选b21 小时前
MySQL之视图copyer_xyf21 小时前
Python 异常处理>no problem<21 小时前
基于cola5.0的基础设施层的多数据库切换方案思路OceanBase数据库官方博客21 小时前
OceanBase 赋能央国企:从发电到用电的全链路业务承载麻雀飞吧21 小时前
期货多合约策略目标持仓怎么更新才不乱Cthy_hy1 天前
拓扑排序超详解:原理 + Kahn 贪心算法LSssT.1 天前
【01】Python 机器学习