`

通过jsonp跨域获取JSON数据

 
阅读更多

定义:

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

 

JSONP原理: 
首先在客户端注册一个callback, 然后把callback的名字传给服务器。
此时,服务器先生成 json 数据。
然后以 javascript 语法的方式,生成一个function , function 名字就是传递上来的参数 jsonp.
最后将 json 数据直接以入参的方式,放置到 function 中,这样就生成了一段 js 语法的文档,返回给客户端。
客户端浏览器,解析script标签,并执行返回的 javascript 文档,此时数据作为参数,传入到了客户端预先定义好的 callback 函数里.(动态执行回调函数)

 

例子

 

Html代码  收藏代码
  1. <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />  
  2. <script type="text/javascript">  
  3.     function jsonpCallback(result) {  
  4.         alert(result.a);  
  5.         alert(result.b);  
  6.         alert(result.c);  
  7.         for(var i in result) {  
  8.             alert(i+":"+result[i]);//循环输出a:1,b:2,etc.  
  9.         }  
  10.     }  
  11. </script>  
  12. <script type="text/javascript" src="http://crossdomain.com/services.php?callback=jsonpCallback"></script>  

 

 

Php代码  收藏代码
  1. <?php  
  2.   
  3. //服务端返回JSON数据  
  4. $arr=array('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);  
  5. $result=json_encode($arr);  
  6. //echo $_GET['callback'].'("Hello,World!")';  
  7. //echo $_GET['callback']."($result)";  
  8. //动态执行回调函数  
  9. $callback=$_GET['callback'];  
  10. echo $callback."($result)";  

 

注:

其中 jsonpCallback 是客户端注册的,获取 跨域服务器 上的json数据 后,回调的函数。
http://crossdomain.com/services.php?callback=jsonpCallback
这个 url 是跨域服务 器取 json 数据的接口,参数为回调函数的名字,返回的格式为

jsonpCallback({msg:'this is json data'})

 

 

将上述JS客户端代码用jQuery的方法来实现:

1.$.getJSON
2.$.ajax
3.$.get

 

客户端JS代码在jQuery中的实现方式1:

Js代码  收藏代码
  1. <script type="text/javascript" src="jquery.js"></script>  
  2. <script type="text/javascript">  
  3.     $.getJSON("http://crossdomain.com/services.php?callback=?",  
  4.     function(result) {  
  5.         for(var i in result) {  
  6.             alert(i+":"+result[i]);//循环输出a:1,b:2,etc.  
  7.         }  
  8.     });  
  9. </script>  
 

客户端JS代码在jQuery中的实现方式2:

Js代码  收藏代码
  1. <script type="text/javascript" src="jquery.js"></script>  
  2. <script type="text/javascript">  
  3.     $.ajax({  
  4.         url:"http://crossdomain.com/services.php",  
  5.         dataType:'jsonp',  
  6.         data:'',  
  7.         jsonp:'callback',  
  8.         success:function(result) {  
  9.             for(var i in result) {  
  10.                 alert(i+":"+result[i]);//循环输出a:1,b:2,etc.  
  11.             }  
  12.         },  
  13.         timeout:3000  
  14.     });  
  15. </script>  
 

客户端JS代码在jQuery中的实现方式3:

Js代码  收藏代码
  1. <script type="text/javascript" src="jquery.js"></script>  
  2. <script type="text/javascript">  
  3.     $.get('http://crossdomain.com/services.php?callback=?', {name: encodeURIComponent('tester')}, function (json) { for(var i in json) alert(i+":"+json[i]); }, 'jsonp');  
  4. </script>  
分享到:
评论

相关推荐

    使用Jsonp方式跨域获取json

    JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了`&lt;script&gt;`标签可以跨域请求资源的特性来实现数据的交换。在Web开发中,由于浏览器的同源策略限制,JavaScript通常无法直接访问不同源的资源,但JSONP...

    html通过 ajax jsonp跨域请求接收和传送数据

    HTML通过AJAX和JSONP跨域请求常用于获取远程API数据、实时更新网页内容、用户认证等场景。例如,社交网站获取用户信息、新闻网站动态加载评论、电子商务网站实时显示库存等。 综上所述,HTML借助AJAX和JSONP,可以...

    利用JQuery jsonp实现Ajax跨域请求json数据

    通过在客户端设置`dataType: 'jsonp'`和`jsonp: 'callback'`,然后在服务器端根据请求的回调函数参数构建响应,我们可以实现Ajax跨域获取JSON数据。无论是在.Net的`.handler`还是WebService中,这一过程都是相似的,...

    Ajax +jquery跨域获取JSON

    JSONP是一种非标准的跨域方法,通过动态插入`&lt;script&gt;`标签,从服务器端获取JSON数据。服务器需要将数据包装在一个函数调用中,客户端定义该函数来接收数据。而CORS则是一种更为现代和安全的跨域方式,需要服务器端...

    jsonp跨域解决源代码

    JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了HTML的`&lt;script&gt;`标签可以不受同源策略限制的特性,实现JavaScript从不同源获取数据。在本例中,我们将探讨如何通过JSONP来解决JavaScript的跨域问题,...

    JSONP跨域实现百度搜索功能(v1.0.0)

    在本项目"JSONP跨域实现百度搜索功能(v1.0.0)"中,我们将深入探讨如何利用JSONP技术来实现在网页上嵌入一个能够进行百度搜索的功能。 首先,我们需要理解为什么需要JSONP。浏览器的同源策略是出于安全考虑,不允许...

    web前端跨域取JSON

    5. 实践项目,通过创建一个简单的Web应用,实现跨域获取和展示JSON数据。 在实践中,可以参考压缩包中的"Web"文件,这是一个适合新手的项目,通过这个项目,你可以了解到如何运用上述知识进行实际操作,加深理解,...

    jquery跨域获取json

    总结来说,"jquery跨域获取json"是一个关于JavaScript编程和jQuery库如何通过JSONP技术解决跨域获取数据的问题。在实际开发中,了解并掌握这一技术对前端开发者尤其重要,因为很多API和数据服务都是部署在不同的域名...

    ajax jsonp 跨域处理

    Ajax JSONP跨域处理是Web开发中的重要技术,通过JSONP,开发者可以在不违反同源策略的前提下实现跨域数据交互。虽然JSONP存在一些限制和安全隐患,但在许多场景下,它仍然是一个实用且有效的解决方案。随着技术的...

    jQuery使用JSONP实现跨域获取数据的三种方法详解

    本文将详细介绍使用jQuery实现JSONP跨域获取数据的三种方法。 ### 第一种方法:$.ajax()函数 $.ajax()是jQuery中最为通用的Ajax实现方式。要使用JSONP方法,我们需要在$.ajax()函数中设置`dataType`为'jsonp'。...

    jsonp跨域获取数据的基础教程.docx

    JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了HTML中`&lt;script&gt;`标签没有同源策略限制的特点,允许网页从不同的域获取数据。在JavaScript中,由于同源策略的限制,通常不能从一个域下获取另一个域的...

    JS 使用 JSONP 跨域获取用户IP

    JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了`&lt;script&gt;`标签可以跨域请求资源的特性来实现JavaScript与服务器之间的通信。在JavaScript中,由于同源策略的限制,通常不能直接访问不同源的资源。但是...

    jquery下利用jsonp跨域访问实现方法

    总之,jQuery通过`$.getJSON()`和JSONP机制为开发者提供了一种简单的方式来实现跨域数据请求,使得在前后端分离的架构中,前端可以轻松地获取和处理来自其他域的数据。虽然有一些限制,但在许多场景下,JSONP仍然是...

    JQuery用$.ajax或$.getJSON跨域获取JSON数据的实现代码

    **jQuery跨域获取JSON数据详解** 在Web开发中,由于浏览器的安全策略,JavaScript通常不能直接进行跨域请求,但jQuery提供了$.ajax和$.getJSON方法...只要正确配置服务端和客户端,就可以轻松实现跨域JSON数据的获取。

    jsonp跨域请求数据实现手机号码查询实例分析.docx

    通过这种方式,我们不仅解决了跨域问题,还能够有效地获取和展示所需的数据。需要注意的是,在实际部署过程中还需要考虑安全性问题,比如验证用户输入的有效性、防止XSS攻击等。此外,随着ES6和Fetch API的普及,...

    跨域访问解决方法-jsonp

    本文将详细探讨JSONP的工作原理以及如何在实际项目中使用它来跨域获取JSON数据。 ### JSONP简介 JSONP全称为"JSON Padding",它并不是JSON的一种新格式,而是一种利用动态创建`&lt;script&gt;`标签来绕过同源策略的技巧...

    AJAX跨域请求JSONP获取JSON数据的实例代码

    JSONP(JSON with Padding)是JavaScript中用于解决同源策略限制的一种技术,它允许Web应用程序进行跨域数据交互。在JavaScript中,XMLHttpRequest对象受到同源策略的约束,无法直接发起对不同源的HTTP请求。然而,...

    利用jsonp解决js读取本地json跨域的问题

    标题中的“利用jsonp解决js读取本地json跨域的问题”是指在JavaScript中,由于同源策略的限制,AJAX无法直接从本地文件系统获取JSON数据。然而,JSONP(JSON with Padding)是一种绕过同源策略的技术,尤其适用于GET...

    jsonp跨域获取数据的基础教程

    跨域请求数据就是在这种背景下产生的需求,而JSONP(JSON with Padding)是一种解决跨域请求数据问题的古老技术,本篇基础教程会深入讲解JSONP的原理以及如何实现JSONP跨域获取数据。 首先,JSONP的核心在于利用了`...

    JSONP解决跨域问题

    总结来说,JSONP是一种解决跨域问题的技术,通过将数据封装在JavaScript函数调用中,使得前端能够跨越同源策略的限制获取到服务端的数据。在C# Web Service中实现JSONP,需要创建支持回调的Web方法并设置适当的响应...

Global site tag (gtag.js) - Google Analytics