为了账号安全,请及时绑定邮箱和手机立即绑定

jsonp返回的数据是什么格式

jsonp返回的数据是什么格式

撒科打诨 2018-07-23 02:02:23

jsonp返回的数据是什么格式


查看完整描述

1 回答

?
斯蒂芬大帝

TA贡献1690条经验 获得超9个赞

jsonp主要是为了解决跨域访问问题而产生的,其返回的数据格式一般就是一个js脚本,这个脚本有以下特点:


返回的js脚本通常是服务端动态生成的。

整个脚本通常有且仅有一条语句,且是一个函数调用。

脚本中调用到的函数,是页面上存在的一个函数,其函数名通过get参数传递给服务端,服务端再将其回写到js脚本中。

函数的参数,是服务端处理后的结果数据,以json格式直接写在脚本中。这也是jsonp得名的由来。

因为,ajax是不允许跨域访问的,所以要从其他站点获取数据时,就需要经过一些特殊的手段才行,jsonp就是一种成本比较低的手段(此外还有服务端代理等方式)。jsonp主要是利用了<script><img><iframe>标签可以跨域访问的特点。具体的步骤如下:

首先,在本地页面上事先准备好一个用于接受返回数据的函数,比如:function showList(listdata){...};

其次,在需要的时点静态或动态地创建一个标签,比如:<script type="text/javascript" src="http://another.website/jsonp_call?arg1=xx&arg2=xx&callback=showList" ></script>,其中:

another.website:是另外一个站点的域名或ip地址。

jsonp_call:是该站点提供的一个动态内容访问的服务,可用php、java等任何技术实现。

arg1、arg2:是该服务所需要的参数

callback:是用于返回结果的回调函数名。

然后,another.website站点接收到这个jsonp_call的请求后,进行相应的处理,并将放回的结果封装为一个js脚本,其内容类似这样的形式:showList([{id:1,name:'a'}, {id:2,name:'b'}, ..., {id:n,name:'NNN'}]);

最后,结果返回到客户端后,就会自动解析并执行这个showList函数。

这样就完成了从“向其他站点发起请求”到“接收其他站点的应答数据”的整个过程,并且突破了ajax跨域访问的限制。


查看完整回答
反对 回复 2018-07-28
  • 1 回答
  • 0 关注
  • 1438 浏览
我要回答

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信