首页 » 前端 » 正文

jQuery异步加载和跨域

1.JSONP(JSON with Padding-填充json数据也就是常用的json跨域方式):利用script标签,通过特定的src地址的调用,来执行一个客户端的js函数,在 服务器端生成相对的数据(json格式)并以参数的形式传递给这个客户端的js函数并执行这个函数,前提是需要服务器端的数据输出支持。

2.为什么使用JSONP:由于 JSON 只是一种含有简单括号结构的纯文本,因此许多通道都可以交换 JSON 消息。因为同源策略的限制,我们不能在与外部服务器进行通信的时候使用 XMLHttpRequest。而JSONP是一种可以绕过同源策略的方法,即通过使用 JSON 与 <script> 标记相结合的方法,从服务端直接返回可执行的JavaScript函数调用或者JavaScript对象。

3.谁在使用JSONP:dojo、JQuery、Youtube GData API 、Google Social Graph API 、Digg API 、GeoNames webservice、豆瓣API、Del.icio.us JSON API等。

访问:interface_url?callback=success_jsonpCallback&school=school$id=id

跟平时使用的异步Ajax一样,只是里面添加了jsonp、jsonpCallback两个参数,这个会自动拼接到你访问的 interface_url中当做参数名和参数值。

服务器端要做一个判断:如果是正常的情况下返回普通的json字符串就可以了,但是判断链接中是否含有jsonp的callback,如果是php,那就if($_get[‘callback’]),如果判断通过,就要在普通的json格式字符外再加上一个对象名——即获取到的callback参数的值。看到下面的例子应该就明白了吧。

普通的json格式:

返回的jsonp格式:

发表评论