定义:
JSONP是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问(这仅仅是JSONP简单的实现形式)。
JSONP原理:
首先在客户端注册一个callback, 然后把callback的名字传给服务器。
此时,服务器先生成 json 数据。
然后以 javascript 语法的方式,生成一个function , function 名字就是传递上来的参数 jsonp.
最后将 json 数据直接以入参的方式,放置到 function 中,这样就生成了一段 js 语法的文档,返回给客户端。
客户端浏览器,解析script标签,并执行返回的 javascript 文档,此时数据作为参数,传入到了客户端预先定义好的 callback 函数里.(动态执行回调函数)
例子:
- <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
- <script type="text/javascript">
- function jsonpCallback(result) {
- alert(result.a);
- alert(result.b);
- alert(result.c);
- for(var i in result) {
- alert(i+":"+result[i]);//循环输出a:1,b:2,etc.
- }
- }
- </script>
- <script type="text/javascript" src="http://crossdomain.com/services.php?callback=jsonpCallback"></script>
- <?php
-
-
- $arr=array('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
- $result=json_encode($arr);
-
-
-
- $callback=$_GET['callback'];
- 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:
- <script type="text/javascript" src="jquery.js"></script>
- <script type="text/javascript">
- $.getJSON("http://crossdomain.com/services.php?callback=?",
- function(result) {
- for(var i in result) {
- alert(i+":"+result[i]);
- }
- });
- </script>
客户端JS代码在jQuery中的实现方式2:
- <script type="text/javascript" src="jquery.js"></script>
- <script type="text/javascript">
- $.ajax({
- url:"http://crossdomain.com/services.php",
- dataType:'jsonp',
- data:'',
- jsonp:'callback',
- success:function(result) {
- for(var i in result) {
- alert(i+":"+result[i]);
- }
- },
- timeout:3000
- });
- </script>
客户端JS代码在jQuery中的实现方式3:
- <script type="text/javascript" src="jquery.js"></script>
- <script type="text/javascript">
- $.get('http://crossdomain.com/services.php?callback=?', {name: encodeURIComponent('tester')}, function (json) { for(var i in json) alert(i+":"+json[i]); }, 'jsonp');
- </script>
分享到:
相关推荐
JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了`<script>`标签可以跨域请求资源的特性来实现数据的交换。在Web开发中,由于浏览器的同源策略限制,JavaScript通常无法直接访问不同源的资源,但JSONP...
HTML通过AJAX和JSONP跨域请求常用于获取远程API数据、实时更新网页内容、用户认证等场景。例如,社交网站获取用户信息、新闻网站动态加载评论、电子商务网站实时显示库存等。 综上所述,HTML借助AJAX和JSONP,可以...
通过在客户端设置`dataType: 'jsonp'`和`jsonp: 'callback'`,然后在服务器端根据请求的回调函数参数构建响应,我们可以实现Ajax跨域获取JSON数据。无论是在.Net的`.handler`还是WebService中,这一过程都是相似的,...
JSONP是一种非标准的跨域方法,通过动态插入`<script>`标签,从服务器端获取JSON数据。服务器需要将数据包装在一个函数调用中,客户端定义该函数来接收数据。而CORS则是一种更为现代和安全的跨域方式,需要服务器端...
JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了HTML的`<script>`标签可以不受同源策略限制的特性,实现JavaScript从不同源获取数据。在本例中,我们将探讨如何通过JSONP来解决JavaScript的跨域问题,...
在本项目"JSONP跨域实现百度搜索功能(v1.0.0)"中,我们将深入探讨如何利用JSONP技术来实现在网页上嵌入一个能够进行百度搜索的功能。 首先,我们需要理解为什么需要JSONP。浏览器的同源策略是出于安全考虑,不允许...
5. 实践项目,通过创建一个简单的Web应用,实现跨域获取和展示JSON数据。 在实践中,可以参考压缩包中的"Web"文件,这是一个适合新手的项目,通过这个项目,你可以了解到如何运用上述知识进行实际操作,加深理解,...
总结来说,"jquery跨域获取json"是一个关于JavaScript编程和jQuery库如何通过JSONP技术解决跨域获取数据的问题。在实际开发中,了解并掌握这一技术对前端开发者尤其重要,因为很多API和数据服务都是部署在不同的域名...
Ajax JSONP跨域处理是Web开发中的重要技术,通过JSONP,开发者可以在不违反同源策略的前提下实现跨域数据交互。虽然JSONP存在一些限制和安全隐患,但在许多场景下,它仍然是一个实用且有效的解决方案。随着技术的...
本文将详细介绍使用jQuery实现JSONP跨域获取数据的三种方法。 ### 第一种方法:$.ajax()函数 $.ajax()是jQuery中最为通用的Ajax实现方式。要使用JSONP方法,我们需要在$.ajax()函数中设置`dataType`为'jsonp'。...
JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了HTML中`<script>`标签没有同源策略限制的特点,允许网页从不同的域获取数据。在JavaScript中,由于同源策略的限制,通常不能从一个域下获取另一个域的...
JSONP(JSON with Padding)是一种跨域数据交互协议,它利用了`<script>`标签可以跨域请求资源的特性来实现JavaScript与服务器之间的通信。在JavaScript中,由于同源策略的限制,通常不能直接访问不同源的资源。但是...
总之,jQuery通过`$.getJSON()`和JSONP机制为开发者提供了一种简单的方式来实现跨域数据请求,使得在前后端分离的架构中,前端可以轻松地获取和处理来自其他域的数据。虽然有一些限制,但在许多场景下,JSONP仍然是...
**jQuery跨域获取JSON数据详解** 在Web开发中,由于浏览器的安全策略,JavaScript通常不能直接进行跨域请求,但jQuery提供了$.ajax和$.getJSON方法...只要正确配置服务端和客户端,就可以轻松实现跨域JSON数据的获取。
通过这种方式,我们不仅解决了跨域问题,还能够有效地获取和展示所需的数据。需要注意的是,在实际部署过程中还需要考虑安全性问题,比如验证用户输入的有效性、防止XSS攻击等。此外,随着ES6和Fetch API的普及,...
本文将详细探讨JSONP的工作原理以及如何在实际项目中使用它来跨域获取JSON数据。 ### JSONP简介 JSONP全称为"JSON Padding",它并不是JSON的一种新格式,而是一种利用动态创建`<script>`标签来绕过同源策略的技巧...
JSONP(JSON with Padding)是JavaScript中用于解决同源策略限制的一种技术,它允许Web应用程序进行跨域数据交互。在JavaScript中,XMLHttpRequest对象受到同源策略的约束,无法直接发起对不同源的HTTP请求。然而,...
标题中的“利用jsonp解决js读取本地json跨域的问题”是指在JavaScript中,由于同源策略的限制,AJAX无法直接从本地文件系统获取JSON数据。然而,JSONP(JSON with Padding)是一种绕过同源策略的技术,尤其适用于GET...
跨域请求数据就是在这种背景下产生的需求,而JSONP(JSON with Padding)是一种解决跨域请求数据问题的古老技术,本篇基础教程会深入讲解JSONP的原理以及如何实现JSONP跨域获取数据。 首先,JSONP的核心在于利用了`...
总结来说,JSONP是一种解决跨域问题的技术,通过将数据封装在JavaScript函数调用中,使得前端能够跨越同源策略的限制获取到服务端的数据。在C# Web Service中实现JSONP,需要创建支持回调的Web方法并设置适当的响应...