Jsonp的原理
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Jsonp的原理,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3270字,纯文字阅读大概需要5分钟。
内容图文
其本质是利用了script标签具有可跨域的特性,由服务端返回预先定义好的javascript函数调用,并且将服务端数据以该函数参数的形式传递过来。
一、代码
- 客户端:
为什么要定义callback?首先我们知道,这个get请求发出去后如何接口请求回来的数据,callback=func则可以帮我们做这件事。(需要在客户端声明一个与callback=“func”的func同名的函数,通过jsonp方式成功接收到服务器数据的时候就会自动触发这个回调函数)
<button id="btn">点击</button> <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script> <script> $(‘#btn‘).click(function(){ var frame = document.createElement(‘script‘); frame.src = ‘http://localhost:3000/article-list?name=leo&age=30&callback=func‘; $(‘body‘).append(frame); }); function func(res){ alert(res.message+res.name+‘你已经‘+res.age+‘岁了‘); } </script>
- 服务端:
router.get(‘/article-list‘, (req, res) => { console.log(req.query, ‘123‘); let data = { message: ‘success!‘, name: req.query.name, age: req.query.age } data = JSON.stringify(data) res.end(‘func(‘ + data + ‘)‘); });
二、举例
1.通过原生js方式使用jsonp
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> *{ margin: 0; padding: 0; list-style: none; } ul{ background-color: #ccc; width: 172px; } </style> </head> <body> <input type="" name="" id=‘inp‘> <ul> </ul> <script type="text/javascript"> //1获取input //2.注册事件,获取value //3动态创建script //4追加到body、 var inp = document.getElementById(‘inp‘) var ul = document.querySelector(‘ul‘) function suggest_so(data){ console.log(data) var {result} = data ul.innerHTML = ‘‘ for(var i =0;i<result.length;i++){ // 创建li var li = document.createElement(‘li‘) li.innerHTML = result[i].word; ul.appendChild(li) } } inp.oninput = function(){ // 判断创建script是否一致 if(document.getElementsByClassName(‘ss‘).length>0){ document.getElementsByClassName(‘ss‘)[0].remove() } var val = inp.value; var jsonp = document.createElement(‘script‘) jsonp.src = ‘https://sug.so.360.cn/suggest?callback=suggest_so&encodein=utf-8&encodeout=utf-8&format=json&fields=word&word=‘+val jsonp.className = ‘ss‘ document.body.appendChild(jsonp) } </script> </body> </html>
2.通过jQuery封装的ajax方式使用jsonp
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>Document</title> <style type="text/css"> * { margin: 0; padding: 0; list-style: none; } ul { background-color: #ccc; width: 172px; } </style> <script type="text/javascript" src="jquery-1.12.1.js"></script> <script type="text/javascript" src="template-web.js"></script> </head> <body> <input type="" name="" id="inp" /> <ul></ul> <script type="text/html" id="tpl"> {{each result value}} <li>{{value.word}}</li> {{/each}} </script> <script type="text/javascript"> $(function(){ $(‘#inp‘).on(‘input‘,function(){ $.ajax({ url:‘https://sug.so.360.cn/suggest?callback=suggest_so&encodein=utf-8&encodeout=utf-8&format=json&fields=word&word=‘+$(this).val(), dataType:‘jsonp‘, jsonpCallback:‘suggest_so‘, success:function(data){ var {result} = data; var str = template(‘tpl‘,{result}) $(‘ul‘).html(str) } }) }) }) </script> </body> </html>
原文:https://www.cnblogs.com/belongs-to-qinghua/p/11353154.html
内容总结
以上是互联网集市为您收集整理的Jsonp的原理全部内容,希望文章能够帮你解决Jsonp的原理所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。