Jsonp的使用
发布时间:2020-12-16 18:39:21 所属栏目:百科 来源:网络整理
导读:1.jsonp的理解 浏览器发送ajax请求时会因为跨域而无法正常获取数据,而script标签请求数据时发送的是http请求,没有跨域问题。利用这个机制绕过跨域的限制来获取后端数据的技术就叫jspnp 实现原理: 在客户端定义一个函数,这个函数通常把传入的参数(数据)
1.jsonp的理解浏览器发送ajax请求时会因为跨域而无法正常获取数据,而script标签请求数据时发送的是http请求,没有跨域问题。利用这个机制绕过跨域的限制来获取后端数据的技术就叫jspnp 实现原理: 2.原生js实现jsonphtml页面的代码 <body> <h1>新闻标题</h1> <p>内容</p> <input type="button" value="更新信息" id="btn"> </body> <script> function updatePage(obj){ var h1 = document.querySelector("h1") var p = document.querySelector("p") h1.innerHTML = obj.title p.innerHTML = obj.content } //监听按钮点击 document.querySelector("#btn").onclick = function(){ //创建script标签 var script = document.createElement("script") //设置src属性 script.src = "/jsonp/index.js" // 插入标签 document.head.appendChild(script) // 移除此标签 document.head.removeChild(script) } </script> 服务器返回的js文件代码 updatePage({ title:"火影忍者完结了",content:"宇智波鼬的须佐能乎是最早登场的,虽然不是完全体状态,但鼬的须佐手持三大神器,可谓攻守兼备,让敌人找不到任何破绽。" }) 这里服务器端的代码写死了,实际项目中,会根据前端传递的数据动态生成js代码返回,但是本质上都是 客户端函数的调用 localhost:8080/jsonp?cb=updatePage&id=1 这样服务器就知道返回的js文件中要调用的函数是updatePage,而参数则根据id值去数据库中获取数据并传入到updatePage中 3.jquery实现使用$.ajax(),传入配置项 <script> function updatePage(obj){ var h1 = document.querySelector("h1") var p = document.querySelector("p") h1.innerHTML = obj.title p.innerHTML = obj.content } //监听按钮点击 $("#btn").on("click",function(){ console.log("click") $.ajax({ url:"./jsonp/index.js",type:"get",dataType: "jsonp",data:{ id:1 },jsonp:"cb",// 要调用的客户端函数的key jsonpCallback:"updatePage",//客户端函数名称 success:function(data){ console.log(data) } }) }) </script> 运行代码会访问这个url http://localhost:8080/jsonp/index.js?cb=updatePage&id=1 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |