短信发送必须由后端发起,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助手,依托大模型,帮助用户记录、整理和分析音视频内容,体验用大模型做音视频笔记、整理会议记录。
相关推荐
Jetev1 小时前
CSS如何实现图片自动裁剪填充_巧用object-fit属性控制尺寸Gerardisite1 小时前
企业微信客户管理系统实战:标签、分层与自动化流程搭建处女座_三月1 小时前
时序数据库改存储时长m0_463672201 小时前
SQL窗口函数如何优化嵌套子查询_提升执行效率Francek Chen1 小时前
【大数据存储与管理】云数据库:03 云数据库系统架构六月雨滴1 小时前
数据库角色管理(Role Management)codingxb451 小时前
【Python】uv基础使用CLX05051 小时前
如何通过 curl 调用 Go 标准库 RPC 服务(JSON-RPC 协议)weixin_459753941 小时前
golang如何设计HTTP中间件链_golang HTTP中间件链设计方法