MVC项目弹窗加载支付局部视图时出现Stripe未定义错误
解决Uncaught ReferenceError: Stripe is not defined错误
你遇到的这个问题,核心原因是Stripe的外部脚本还没加载完成,你的初始化代码就先执行了——哪怕你把脚本标签写在了jQuery代码前面,外部脚本的加载是异步的,有时候会跟不上$(document).ready()的执行节奏。
下面给你几个实用的解决方案:
1. 确保脚本加载完成后再初始化
用jQuery的getScript方法动态加载Stripe脚本,这样能精准控制代码执行时机,只有脚本加载成功后才会初始化Stripe:
<script type="text/javascript"> $(document).ready(function () { $.getScript("https://js.stripe.com/v2/") .then(function() { // 这里要确认publishablekey变量已经正确定义且能访问到 Stripe.setPublishableKey(publishablekey); }) .catch(function(error) { console.error("Stripe脚本加载失败,请检查网络:", error); }); }); </script>
2. 先排查脚本是否真的加载成功
打开浏览器开发者工具(按F12),切换到Network标签页,刷新页面后搜索js.stripe.com:
- 如果请求状态码是200,说明脚本加载正常,问题就出在执行时机上;
- 如果是404或其他错误,大概率是网络环境无法访问该域名(比如内网限制)。
3. 检查全局变量的有效性
顺便确认下publishablekey这个变量是否在当前作用域能正常访问:比如有没有拼写错误(比如常见的驼峰写法publishableKey)、是不是定义在了全局作用域里——要是这个变量没定义,后续还会引发新的错误。
另外提一句,Stripe v2已经是旧版本了,官方现在主推v3版本,不过如果你暂时需要用v2,上面的方案完全适用。
内容的提问来源于stack exchange,提问作者V.Mulik
相关产品推荐
相关产品推荐

