日期:2014-05-16  浏览次数:20692 次

请教关于 $.getJSON的1.3.2和1.7.2.min不同
对于$.getJSON(url,function(data){})我遇到以下问题,一直没搞懂,请教大家
有两个URL:
URL132:http://m.weather.com.cn/data/101110101.html
URL172:http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?

当<script type="text/javascript" src="scripts/jquery-1.7.2.min.js"></script>
$.getJSON(URL172,function(data){alert(data.title);});结果正确
当<script type="text/javascript" src="lib/jquery-1.3.2.min.js"></script>
$.getJSON(URL172,function(data){alert(data.title);});结果正确
结论:无论1.3.2.min,还是1.7.2.min,URL172都正确。

当<script type="text/javascript" src="scripts/jquery-1.7.2.min.js"></script>
$.getJSON(URL132,function(data){alert(data.weatherinfo.city);});结果不正确
当<script type="text/javascript" src="scripts/jquery-1.3.2.min.js"></script>
$.getJSON(URL132,function(data){alert(data.weatherinfo.city);});结果正确
结论:只有1.3.2.min,URL132才正确,在1.7.2.min,URL132就报错。

跟踪了一下错误,应该是在jquery-1.7.2.min.js文件里有错误。比较了Jquery-1.3.2.min.js和Jquery-1.7.2.min.js发现有很大不同,试着按照1.3.2改1.7.2对应parseJson部分,以失败告终。我用Json检查工具试过两个URL生成的字符串都是合法的JSON格式,实在不知道URL132和URL172有啥不同,特向大家请教,谢谢
JSON 1.7.2.min 1.3.2.min

------解决方案--------------------
首先2个域名都跨域了

URL172是JSONP操作格式,所以2个版本的jquery都没问题

URL132:这个不是JSONP操作,直接用ajax请求,楼主用的是IE浏览器吧,并且本地测试,没有发布,这个和IE安全设置有关,如果是非IE内核的浏览器2个版本都会有问题,1.5+版本重写过了ajax,增加是否支持跨域的判断,高版本jq忽略了ie本地安全配置,具体看这个jquery1.5+ ajax跨域请求在IE下没反应分析

更多ajax的问题参考这个:http://bbs.csdn.net/topics/390542772,自己慢慢研究