小编有一个客户,开发了一套小程序系统。代码在本地测试的时候一切正常。原本高高兴兴的上传到服务器后,客户就反应后台出问题。说是有的数据都无法显示!
然后我登录了WEB端的后台查看,确实所有返回数据的Ajax都无法显示,然后通过查看AJAX发现返回的数据格式都是正常的,并没有任何的问题。然后输出AJAX的ERROR发现错误显示是parsererror。问题是找到了,就是无法序列化返回Api接口序列化的JSON。然后左看又看返回的JSON格式没有任何一丁点的问题,但确实就是js无法序列化了。这个问题就奇怪了啊。
数据返回的没问题,然后我判断可能是zepto.js 出了问题。因为我是用它的AJAX方法。然后通过排除法,我把它替换成jquery.js 然后问题依旧。那么问题就很可能出现在源码上。
通过逐步的排查问题,最终发现一个很吊诡的事情,就是只要曾经在服务器上修改过源码。然后格式没保存为ANSI编码的文件都有可能会造成返回的JSON数据无法被JS给序列化。但你说只能用ANSI编码的文件才能正常的序列化JSON吧,UTF-8编码的文件大部分都是正常的,只有在服务器上修改了文件后有概率造成无法序列化的问题。这我想破脑袋也不明白问题出在哪里,因为如果说其他编码不能序列化的话,那肯定不能时好时坏吧。
然后我怀疑是有病毒造成这种问题,但是经过杀软的查杀。貌似也没查出任何病毒,最后解决的方法是我重新从本地上传一份源码到服务器后通过IIS绑定了新上传的目录后网站功能一切正常,但这个问题为什么会出现还是没想明白。