刁连通 2011-05-25
最近做一个控件jqGrid,这个表格控件从后台获取数据使用的是jquery的.ajax()方法。
我在后台返回一组字符串:
"{"total":100,"rows":[{"cell":['0','电影_0'],"id":"0"},{"cell":['1','电影_1'],"id":"1"},{"cell":['2','电影_2'],"id":"2"},{"cell":['3','电影_3'],"id":"3"},{"cell":['4','电影_4'],"id":"4"},{"cell":['5','电影_5'],"id":"5"},{"cell":['6','电影_6'],"id":"6"},{"cell":['7','电影_7'],"id":"7"},{"cell":['8','电影_8'],"id":"8"},{"cell":['9','电影_9'],"id":"9"}],"records":"10","page":"1"}"
后,死活在前端显示不出来。
后来发现是发生了解析错误。
在jquery的回调方法中执行了parseJSON去解析字符串。
该方法的先把我的JSON字符串替换成了:
"{]:],]{]']','电影_]'],]:]},{]']','电影_]'],]:]},{]']','电影_]'],]:]},{]']','电影_]'],]:]},{]']','电影_]'],]:]},{]']','电影_]'],]:]},{]']','电影_]'],]:]},{]']','电影_]'],]:]},{]']','电影_]'],]:]},{]']','电影_]'],]:]}],]:],]:]}"
最后去json官网才发现规定了json里面的字符串必须要用双引号:
而我在"cell"的array里面的字符串用了单引号,所以发生了问题。可是在浏览器端直接eval我的那段json是没问题的。看来还是要规范点好。