Jquery ajax不能解析json对象,报Invalid JSON错误的原因和解决方法


下面说一下,最近在使用jquery 1.4中使用$.ajax()方法解析json对象遇到的问题。

Json对象是:

复制代码 代码如下:

[{name:'二手房出售',infoCount:0,pageUrl:'/ershoufang'},{name:'二手房求购',infoCount:0,pageUrl:'/qiugou'},{name:'二手房装修',infoCount:0,pageUrl:'/esfzhuangxiu'},{name:'二手回收',infoCount:0,pageUrl:'/huishou'},{name:'二手摩托车',infoCount:0,pageUrl:'/motor'},{name:'二手汽车求购',infoCount:0,pageUrl:'/ershoucheqg'},{name:'二手汽车转让',infoCount:9,pageUrl:'/ershouche'},{name:'二手市场',infoCount:0,pageUrl:'/ershoushichang'}]


不知道大家有没有发现这段json对象的问题。这样的写法在js脚本和jquery 1.4之前的版本都是没有问题的。因为在1.3及更早版本中,jQuery通过javascript的eval方法来解析json对象。在1.4中,jQuery使用了更严格的方法来解析json。所有的内容都必须使用双引号。

这点从jQuery.parseJSON(json) 可以看出,parseJSON在文档中的解释是:

接受一个JSON字符串,返回解析后的对象。

传入一个畸形的JSON字符串会抛出一个异常。比如下面的都是畸形的JSON字符串:
{test: 1} ( test 没有包围双引号)
{'test': 1} (使用了单引号而不是双引号)

另外,如果你什么都不传入,或者一个空字符串、null或undefined,parseJSON都会返回 null 。



相关阅读:
Joomla教程:jtablesession::Store Failed错误解决方法
PHP学习之整理字符串
WEB标准化的过渡方案
同一个帐号不能同时登陆的问题
无hack无js全兼容text-overflow-ellipsis效果
正则表达式中的特殊字符
加入跨子网路由 Windows Server 2008 VPN
如何用javascript防止连打
一个UBB的PHP类
JS教程:理解JavaScript闭包
Vista系统下IE8有N个进程
如何制作和使用Jffs2文件系统
asp.net(C#)解析Json的类代码
jQuery 源码分析笔记(5) jQuery.support
快速导航

Copyright © 2016 phpStudy |