[b]什么是jsonp[/b]
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秒)与服务交互一次,用的就是这种机制:
[b]所在页面:[/b]
http://weibo.com/xiemingmei/profile
[b]请求地址:[/b]
http://api.weibo.com/remind/unread_count.json?source=1740131375&count=75&user_id=1726873983&callback=stk_7861313120502312
[color=blue]http://weibo.com与http://api.weibo.com属于两个不同的域,不允许用通过xmlhttprequest相互访问。[/color]
[b]响应报文体:[/b]
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){}
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秒)与服务交互一次,用的就是这种机制:
[b]所在页面:[/b]
http://weibo.com/xiemingmei/profile
[b]请求地址:[/b]
http://api.weibo.com/remind/unread_count.json?source=1740131375&count=75&user_id=1726873983&callback=stk_7861313120502312
[color=blue]http://weibo.com与http://api.weibo.com属于两个不同的域,不允许用通过xmlhttprequest相互访问。[/color]
[b]响应报文体:[/b]
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){}