短信发送必须由后端发起,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助手,依托大模型,帮助用户记录、整理和分析音视频内容,体验用大模型做音视频笔记、整理会议记录。
相关推荐
zyplayer-doc8 小时前
核心制度不该被随手修改:用zyplayer-doc锁定文档和全部子文档weixin_BYSJ19878 小时前
【java项目分享】springboot阅读推荐平台10600阿kun要赚马内8 小时前
工具在langchain agent中的调用一路向北North8 小时前
Spring AI(11) :ChatPDF-向量数据库、PDF处理、向量写入和向量搜索暗暗别做白日梦8 小时前
CompletableFuture 并发统计GrowthDiary0078 小时前
Python 常用函数总结ClouGence9 小时前
告别 Navicat!CloudDM:开源免费一站式数据库开发管理工具灵析表格9 小时前
灵析表格功能函数深度分析报告jaboo129 小时前
postgresql从入门到精通