Jsonp跨域的原理以及Jquery的解决方案
2023-06-13 09:14:18 时间
原理:JSONP即JSONwithPadding。由于同源策略的限制,XmlHttpRequest只允许请求当前源(域名、协议、端口)的资源。如果要进行跨域请求,我们可以通过使用html的script标记来进行跨域请求,并在响应中返回要执行的script代码,其中可以直接使用JSON传递javascript对象。这种跨域的通讯方式称为JSONP。
个人理解:
就是在客户端动态注册一个函数functiona(data),然后将函数名传到服务器,服务器返回一个a({/*json*/})到客户端运行,这样就调用客户端的functiona(data),从而实现了跨域.
复制代码代码如下:
个人理解:
就是在客户端动态注册一个函数functiona(data),然后将函数名传到服务器,服务器返回一个a({/*json*/})到客户端运行,这样就调用客户端的functiona(data),从而实现了跨域.
<!DOCTYPEhtmlPUBLIC"-//W//DTDXHTMLTransitional//EN""http://www.worg/TR/xhtmlDTD/xhtmltransitional.dtd">
<htmlxmlns="http://www.worg/xhtml">
<head>
<title>TestJsonp</title>
<scriptsrc="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.2.js"type="text/javascript"></script>
<scripttype="text/javascript">
functionjsonpCallback(result)
{
$.each(result.items,function(i,item){
$("<img/>").attr("src",item.media.m).appendTo("body");
if(i==3)returnfalse;
});
}
</script>
</head>
<body>
<scripttype="text/javascript"src="http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=jsonpCallback"></script>
</body>
</html>
jQuery的解决方案:
<!DOCTYPEhtmlPUBLIC"-//W//DTDXHTMLTransitional//EN""http://www.worg/TR/xhtmlDTD/xhtmltransitional.dtd">
<htmlxmlns="http://www.worg/xhtml">
<head>
<title>TestJsonp</title>
<scriptsrc="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.2.js"type="text/javascript"></script>
<scripttype="text/javascript">
$(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("body");
if(i==3)returnfalse;
});
});
});
</script>
</head>
<body></body>
</html>
jquery的jsoncallback是动态生成的,真正请求服务器的地址:http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=jsonp1274058545738
相关文章
- nginx转发服务器_jquery跨域请求
- jquery选择器用法_jQuery属性选择器
- Js/JQuery根据时区获取当前时间
- 生成二维码的 jQuery 插件:jquery.qrcode.js
- jQuery Google Charts—-一个封装google chart api的jquery插件详解编程语言
- 利用JSONP解决AJAX跨域问题的原理与jQuery解决方案详解编程语言
- jQuery wrap()、wrapAll()和wrapInner()方法
- jQuery温习篇强大的JQuery选择器
- Jquery跨域获得Json时invalidlabel错误的解决办法
- 通过jquery的$.getJSON做一个跨域ajax请求试验
- 50个比较实用jQuery代码段
- PHP中运用jQuery的Ajax跨域调用实现代码
- jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
- jQuery学习笔记(4)--Jquery中获取table中某列值的具体思路
- jquery获取表单元素里面的值示例代码
- Jquery例外被抛出且未被接住原因介绍
- UpdatePanel和jQuery不兼容局部刷新jquery失效
- jquery中animate动画积累的解决方法
- jquery使用淘宝接口跨域查询手机号码归属地实例
- 解决jquery中美元符号命名冲突问题
- 用jQuery与JSONP轻松解决跨域访问的问题
- 利用JQuery和Servlet实现跨域提交请求示例分享
- jquery的父子兄弟节点查找示例代码
- jquery跨域请求示例分享(jquery发送ajax请求)
- jquery的ajax跨域请求原理和示例
- jquery-syntax动态语法着色示例代码
- JQuery中$(document)是什么意思有什么作用
- jquery+ajax实现跨域请求的方法