解决Chrome中调试JS提示“Uncaught TypeError: Cannot use 'in' operator to search for”错误信息问题
最近为了学习WebApi,将过去一个WinForm+WCF模式的系统的部分功能改造为一个B/S模式的应用,开发环境是vs2015,前端使用jquery-1.10.2.min.js中的$.ajax来调用WebApi方法,服务端用Newtonsoft把数据处理成JSON数据送到前端。运行调试过程中发现,Webapi方法成功调用并返回了json格式的字符串,前端接收到该数据后用$.each处理json数据时,在Chrome的调试状下发现错误信息:Uncaught TypeError: Cannot use 'in' operator to search for。以下是出错截图和前后端代码截图:
后台Webapi代码
前端JS代码
Chrome运行调试时menu中的数据
在网上查询产生这个错误信息的原因,说是这种情况是因为从服务端获取到的是一个json字符串,前端接收到这个json格式的字符串不可以直接用,要用JSON.parse()或$.parseJSON()处理成一个json对象才可以,先试一下吧。将ajax中的代码改为
然后在Chrome中运行调试,menu结果为
继续执行,没有错误信息,前端页面也可以正常显示。又试了一下JSON.parse()这种方式,同样有效。过去做项目多数是WinForm应用,后台服务呢也是WCF,这次也是为了能更熟练使用WebAPI,采用RESTful API这种模式来改造程序,过程中遇到的错误及解决方法记录下来,方便以后参考,也希望为遇到这个问题的其它人提供一个参考。