最近研究php微信支付开发,从微信官方下载了微信支付的demo后,测试时总是弹出NaN:Undefined这样的错误提示。不过这个并不影响支付的操作,支付成功后依然可以正常获取到支付状态,并进行跳转、输出等操作。
微信支付demo官方下载地址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1(含php、java、.net C#三个版本)
具体表现为:
1.下单的时候,并没有弹出NaN:undefined。
2.进入到支付页面,在点击支付按钮前,就会弹出NaN:undefined。
3.但是不影响继续支付。点击去支付BTN,还是可以调出支付窗口。
如果点的快,就会先拉起支付界面,等支付完成返回刚才页面的时候,才会看到弹出的”NaN:undefined”,等点击确定该弹窗消失后,才会进行设定的支付成功后的php操作,如跳转、输出等。
支付前界面:
支付成功界面:
谢比特猜想,是不是和微信基础接口一样,有个debug:true这种调试开关,直接关掉就没有了?查了一遍,并没有找到这种。网上找了一圈,发现出现NaN:undefined通常是由于JS中出现的字符型和数字型变量未正确转换导致的。NaN是 Not A Number的意思,所以我们需要在JS中排查所有可能的数字变量,看它是不是定义为字符串了?
最终找到了这里,最简单的方法就是把alert这一行注释掉,可恶的NaN:Undefined错误提示就不会再出现了!