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

Jsonp实现跨域ajax访问
什么是JSONP 

JSONP是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问(这仅仅是JSONP简单的实现形式)。

比如客户想访问http://www.yiwuku.com/myService.aspx?jsonp=callbackFunction
假设客户期望返回JSON数据:["customername1","customername2"]   
那么真正返回到客户端的Script Tags: callbackFunction([“customername1","customername2"])   
可能的调用方式:<script type="text/javascript" src="http://www.yiwuku.com/myService.aspx?jsonp=callbackFunction" />


新浪围脖个人首页定时(每隔30秒)与服务交互一次,用的就是这种机制:
所在页面:
http://weibo.com/xiemingmei/profile
请求地址:
http://api.weibo.com/remind/unread_count.json?source=1740131375&count=75&user_id=1726873983&callback=STK_7861313120502312
http://weibo.com与http://api.weibo.com属于两个不同的域,不允许用通过XMLHTTPRequest相互访问。
响应报文体:
try{STK_7861313120502312({"code":"A00006","data":{"feed":12,"attention":0,"comment":0,"msg":0,"atme":0,"atcmt":0,"group":0,"notice":0,"invite":0,"badge":0,"photo":0}}
);}catch(e){}