浅析JSONP技术原理及实现
跨域问题一直是前端中常见的问题,每当说到跨域,第一浮现的技术必然就是JSONP
JSONP在我的理解,它并不是ajax,它是在文档中插入一个script标签,创建_callback方法,通过服务器配合执行_callback方法,并传入一些参数
JSONP的局限就在于,因为是通过插入script标签,所以参数只能通过url传入,只能满足get请求,特别jQuery的ajax方法时,即使设置type: 'POST',只要设置了dataType: 'jsonp',在请求时,都会自动使用GET请求
实现逻辑
step1: 创建_callback方法 (_callback中可以删除script标签和_callback方法)
step2: 插入script标签
step3: 服务器输出js
实现:
var requestJsonp = function (opt) { var funName, script; / step1 创建_callback方法 / //_callback函数名 funName = '_cb' + (Math.random() 1000000); //创建_callback方法 window[funName] = function (data) { if (typeof opt.suess == 'function') { opt.suess(data); } window[funName] = null; delete window[funName]; document.body.removeChild(script); script = null; }; / step2 插入script标签 / script = document.createElement('script'); script.type = 'text/javascript'; script.src = opt.url + (opt.url.indexOf('?') > -1 ? '&' : '?') + '_callback=' + funName; document.body.appendChild(script); / step3 服务器输出js 服务器应接受url参数中_callback的值,作为函数名执行输出js 类似输出 _callback({"name":"jsonp","description":"jsonp test"}); / / 处理error / script.addEventListener('error', function () { window[funName] = null; delete window[funName]; if (typeof opt.error == 'function') { opt.error(); } document.body.removeChild(script); script = null; }); }; requestJsonp({ url: 'http://.url.?tid=Jsx2', suess: function (data) { console.log(data); }, error: function () { console.log('request error!'); } });
对于浏览器的行为就是插入script标签,执行js代码, 删除script标签
实现代码并没有考虑兼容以及传入data后生成url的问题。
狼蚁网站SEO优化给大家说下jsonp的优缺点
JSONP的优点是它不像XMLHttpRequest对象实现的Ajax请求那样受到同源策略的限制;它的兼容性更好,在更加古老的浏览器中都可以运行,不需要XMLHttpRequest或ActiveX的支持;并且在请求完毕后可以通过调用callback的方式回传结果。
JSONP的缺点则是它只支持GET请求而不支持POST等其它类型的HTTP请求;它只支持跨域HTTP请求这种情况,不能解决不同域的两个页面之间如何进行JavaScript调用的问题。
以上所述是长沙网络推广给大家介绍的浅析JSONP技术原理及实现的相关知识,希望对大家有所帮助,如果大家有任何疑问请给我留言,长沙网络推广会及时回复大家的。在此也非常感谢大家对狼蚁SEO网站的支持!
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程