什么是jsonp?【ajax跨域的解决方案】

Web2.0时代大家都用ajax,ajax取数据前一段时间大家都用xml,后来大家发现了一种更好的,更有效,也更小的表达数据的方式这就是jason,jason是利用javascript的特性来表示变量值的方法,例如:

var site = {name:'宝宝孕历',url:'http://www.baobaoyunli.com/'};


这个相信多数人都知道jason,但是什么是jsonp呢?


出现jsonp也和ajax有关系,因为ajax有一个缺陷(这个缺陷是为用户电脑安全考虑的),就是不能跨域取数据,例如我在[url=http://www.baobaoyunli.com/]www.baobaoyunli.com[/url]不可以用ajax请求abc.baobaoyunli.com的数据,如果请求浏览器会报错。怎么办这是个问题,于是jsonp应运而生了,换句话说,jsonp是为了解决ajax不能跨域的问题才出现的,jsonp可以解决浏览器跨域问题。


jsonp如何解决跨域问题呢?通过欺骗浏览器,让浏览器通过不验证是否在同一个域的方式,获得jason数据,如何做,其实很简单,请看示例:


在需要跨域调用ajax的页面上有如下代码


function callAfterGetData(){
//do something
}




在abc.baobaoyunli.com/data.jason中输出的内容示例:

var site = {name:'宝宝孕历',url:'http://www.baobaoyunli.com/'};
callAterGetData();

data.jason中的内容分两部分,一部分是ajax要取的jason内容,另外一部分是取完数据之后的处理方法调用。


这样就从另外一个方面解决了ajax不能跨域的问题。但是这种方法是有一定缺陷的,用过ajax的人都知道,在ajax请求时readyState改变会引发事件,告诉我们ajax调用成功了还是出错了。但是用jsonp这个方法就没有这种状态,如果出错了没办法发出出错通知。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值