在此记录这个蛋疼的问题,弄了半天才恍然大悟。
在真机的微信浏览器上调试项目的时候 ,发现所有的网络请求都失败了 。通过调试发现状态码都是0,于是从这个状态码开始排查问题。
首先要搞清楚0这个网络状态码怎么产生的(不是常见的300+,200+,400+)。如果请求已经成功发出,那么网络状态码就应该是我们常见的200+至500+。之所以会产生0这个状态码,是因为xhr对象中的open()方法就出了错误,导致send()根本没执行,具体的各个状态码看下表:
-
0 - (未初始化)还没有调用send()方法
-
1 - (载入)已调用send()方法,正在发送请求
-
2 - (载入完成)send()方法执行完成,
-
3 - (交互)正在解析响应内容
-
4 - (完成)响应内容解析完成,可以在客户端调用了
由此我们基本可以定位到问题了,应该就出现在open()这个部分! 我们再看下open()需要哪些参数:
一般情况下是这样 xhr.open(请求方式, url, 是否异步);
一定要仔细检查自己代码的问题,如果为0,必然是此处的问题。我就是一度怀疑微信的x5内核,导致找了半天问题。最终我的问题是出在了url上。 由于接口地址是内网的,导致非内网环境全部报0。排查的时候看地址是平常访问的没毛病(没回过来弯 - -!)。又弄了很久才在同事的提醒下恍然大悟