JSONP基本概念
2015-06-20 14:58
477 查看
AJAX由于JS跨域访问的限制,不能直接请求其他服务器的数据。而Script标签能够访问src指定url,而没有上述限制,所以可以利用这个方法获得其他服务器的数据.
这种利用方式被称为JSONP
为什么命名为JSONP呢。因为首先一般请求的数据为JSON格式,其次,因为通过script标签获得的实际上是js脚本,如果脚本中仅仅包含json数据的话,浏览器就仅仅相当于解析了一下json数据。所以,至少,我们也应该通过某种方法操作这些数据。可以通过添加一些代码来打到目的,比如callback(["json格式数据"])
JavaScript权威指南写了一个getJSONP的通用函数
有以下几个角色:A服务器、B服务器、C客户端
C客户端访问访问A服务器的request.html页面,A服务器需要B服务器的json数据
相关代码如下
A:request.html
这种利用方式被称为JSONP
为什么命名为JSONP呢。因为首先一般请求的数据为JSON格式,其次,因为通过script标签获得的实际上是js脚本,如果脚本中仅仅包含json数据的话,浏览器就仅仅相当于解析了一下json数据。所以,至少,我们也应该通过某种方法操作这些数据。可以通过添加一些代码来打到目的,比如callback(["json格式数据"])
JavaScript权威指南写了一个getJSONP的通用函数
有以下几个角色:A服务器、B服务器、C客户端
C客户端访问访问A服务器的request.html页面,A服务器需要B服务器的json数据
相关代码如下
A:request.html
<!DOCTYPE HTML> <html> <head> <title>JSOPN test</title> </head> <body> JSONP test </body> <script type="text/javascript" src='getJSONP.js' ></script> <script type="text/javascript" > //真正的json处理函数 function alertJSON(data){ alert(data); } getJSONP("http://localhost:8080/jsutil/response.jsp",alertJSON) </script> </html>A:getJSONP.js
//JSONP请求计数 getJSONP.count = 0; function getJSONP(url,callback){ var cbnum = "cb" + (getJSONP.count++) //回调函数名,这种格式表示回调函数保存在getJSONP中,并且以cbnum命名 var cbname = "getJSONP." + cbnum if(url.indexOf("?")===-1){ //请求的回调函数名为cbname,引用脚本的回调函数名为jsonp url += "?jsonp=" + cbname }else{ url += "&jsonp=" + cbname } var script = document.createElement("script") //回调函数的定义 getJSONP[cbnum] = function(response){ try{ callback(response) }finally{ //请求完后,清理现场 delete getJSONP[cbnum] script.parentNode.removeChild(script) } } script.src = url document.body.appendChild(script) }B: response.jsp
<%=request.getParameter("jsonp")%>("json data")C请求A的request页面,结果截图如下C请求A的request页面,结果截图如下
相关文章推荐
- XML 与 JSON 优劣对比
- newtonsoft.json解析天气数据出错解决方法
- vbs 解析json jsonp的方法
- jquery JSON的解析方式示例介绍
- c#版json数据解析示例分享
- ASP JSON类文件的使用方法
- C#实现对Json字符串处理实例
- C#实现Json转Unicode的方法
- php解析json数据实例
- PHP6 先修班 JSON实例代码
- 关于JSON以及JSON在PHP中的应用技巧
- .Net中的json操作类用法分析
- js Object2String方便查看js对象内容
- C#中的DataSet、string、DataTable、对象转换成Json的实现代码
- JavaScript中模拟实现jsonp
- Json实现异步请求提交评论无需跳转其他页面
- javascript格式化json显示实例分析
- jquery处理json数据实例分析
- jQuery向后台传入json格式数据的方法