短信发送必须由后端发起,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助手,依托大模型,帮助用户记录、整理和分析音视频内容,体验用大模型做音视频笔记、整理会议记录。
相关推荐
ThreeS1 小时前
手搓MiniVLA全实战教程-一步一步用pytorch解释原理与思路金銀銅鐵3 小时前
[Python] 模 n 乘法的逆元计算器aqi003 小时前
15天学会AI应用开发(十)把文本嵌入模型换成国产模型吃糖的小孩5 小时前
给 QQ AI 机器人设计“可控记忆”:会话摘要、手动长期记忆与角色卡边界金銀銅鐵20 小时前
[Python] 扩展欧几里得算法Duckdblab20 小时前
DuckDB 性能调优终极指南:打造闪电般的分析体验带派擂总21 小时前
Python全栈开发精华版最全合集(包含各种面试题) Day24_异常和错误笃行3501 天前
金仓数据库数据安全双防线:静态存储加密与传输加密实战笃行3501 天前
金仓数据库物理备份实战:sys_rman 全流程演练与误覆盖抢救