JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML 的<script> 元素是一个例外。利用 <script> 元素的这个开放策略,网页可以得到从其他来源动态产生的 JSON 资料,而这种使用模式就是所谓的 JSONP。用 JSONP 抓到的资料并不是 JSON,而是任意的JavaScript,用 JavaScript 直译器执行而不是用 JSON 解析器解析。
|
1
|
<script type="text/javascript" src="http://www.yiwuku.com/myService.aspx?jsonp=callbackFunction"></script> |
|
1
2
3
4
5
6
7
8
9
10
11
12
|
<script type="text/javascript">functionon CustomerLoaded(result,methodName){ var html=‘<ul>‘; for(var i=0;i<result.length;i++) { html+=‘<li>‘+result[i]+‘</li>‘; } html+=‘</ul>‘; document.getElementById(‘divCustomers‘).innerHTML=html;}</script> |
|
1
|
<div id="divCustomers"></div> |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><head> <title>Top Customers with Callback</title></head><body> <div id="divCustomers"> </div> <script type="text/javascript"> function onCustomerLoaded(result, methodName) { var html = ‘<ul>‘; for (var i = 0; i < result.length; i++) { html += ‘<li>‘ + result[i] + ‘</li>‘; } html += ‘</ul>‘; document.getElementById(‘divCustomers‘).innerHTML = html; } </script> <script type="text/javascript" src="http://www.yiwuku.com/myService.aspx?jsonp=onCustomerLoaded"></script></body></html> |
|
1
2
3
4
5
6
7
8
9
10
11
|
<script>$(document).ready(function(){$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?",function(data){$.each(data.items,function(i,item){$("<img/>").attr("src",item.media.m).appendTo("#images");if(i==3)returnfalse;});});}); |
|
1
2
3
4
5
6
7
8
9
|
$.ajax({dataType:‘jsonp‘,data:‘id=10‘,jsonp:‘jsonp_callback‘,success:function(){//dostuff},}); |
原文:http://www.cnblogs.com/goodbeypeterpan/p/4434599.html