JQuery1.2后getJSON方法支持跨域读取json数据,原理是利用一个叫做jsonp的概念。当然,究其本质还是通过script标签动态加载js,似乎这是实现真正跨域的唯一方法。
getJSON的用法JQuery手册已经写得很详细,参考手册就可以了,很简单。需要指出的一点是getJSON利用的jsonp需要客户端与服务端作出配合。
- 客户端传递的URL里要包含callback变量,以形如callback=?的形式结尾。(jquery会随机生成一个字符串替换?传递给服务端)
- 服务端获取客户端传递的callback的值callbackValue,和需要传递的json字符串构成 callbackValue.’(’.json.’)'传回给客户端(示例为php字符串连接方式,其他语言类似)
不出意外的话应该已经可以跨域读取了。
tags: JQuery, jsonp, 跨域
posted in 代码生活 by admin | 1 Comment
最近写一些php的基础库。编程大师们说一个优秀的程序员要做到DRY,即donn’t repeat yourself。于是总希望能把常见的工作抽象到基础库中。重构、扩展、增增减减,一来二去的对设计模式有了新的理解,当然说白了还只是皮毛。从昨天晚上就一直为一个方法的灵活性而犯愁,总觉得不够灵活、不够优雅。今天早晨醒来的时候,突然想起unix的设计理念:只做一件事并让它做得最好。反向思维一下,方法太灵活,实现方式太多样,其实意味着你应用层代码越乱,因为你无法确定使用你基础库的人会采用何种方式。相反,如果只提供唯一的方法,应用层代码反而清晰,程序可读性就会更强。因为所有开发人员都按同一种方式去实现。
回想自己这段时间,有时候追求所谓的灵活性,其实是有炫技的因素在里面。编写基础库,更多的应该考虑它的效率和健壮性,能单元测试的地方一定要覆盖到。至于方法的实现,实现一种并把它做到最好吧。
将随想记录于此,希望自己少走弯路。
tags: 随想
posted in 代码生活 by admin | No Comments
今天看到一则消息:微软公布了2400不兼容ie8的站点,几乎所有的门户站都上榜了。如今ie是绝对主流的浏览器,对ie8的兼容是前端工程师们的必修课了。估计,不多久前端工程们都要开始忙碌了吧。
以前服务过的那些客户,也要找我麻烦了吧:D
tags: 浏览器
posted in 可用性设计 by admin | No Comments