原生js实现简单JSONP
JSONP是一种非常常见的实现跨域请求的方法。其基本思想是利用浏览器中可以跨域请求外链的JS文件,利用这一特性实现数据传输。
用原生JS实现JSONP非常简单,无非几点:
1)定义一个函数,用于处理接收到的跨域数据。
2)生成一个dom节点(script节点),然后src属性上面记入发送的目的URL以及参数。
3)在跨域服务器端接收GET请求,返回数据(返回之前定义函数的调用的字符串)。
4)删除之前生成的script节点。
演示如下:
1)首先需要一个是同源服务器,一个跨域访问的服务器。
最简单的方式就是使用apache配置两个虚拟主机。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | //浏览器器端 <script type= "text/javascript" > //定义一个发送Jsonp请求的函数 function jsonp(obj) { //定义一个处理Jsonp返回数据的回调函数 window[ "callback" ] = function (object) { obj.success(JSON.parse(object)); } var script = document.createElement( "script" ); //组合请求URL script.src = obj.url + "?fn=callback" ; for (key in obj.data){ script.src += "&" + key + "=" + obj.data[key]; } //将创建的新节点添加到BOM树上 document.getElementsByTagName( "body" )[0].appendChild(script); } </script> <script type= "text/javascript" > //调用Jsonp函数发送jsonp请求 jsonp({ url: "http://localhost/index.php" , data:{ name: "小明" , }, success: function (obj) { alert( "性别" + obj.sex); } }); </script> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | //服务器端 <?php header( 'Content-Type: application/json; charset=UTF-8' ); $fn = $_GET [ "fn" ]; $name = $_GET [ "name" ]; $result = array (); if ( $name == "小明" ){ $result [ "sex" ] = "男" ; } else if ( $name == "小红" ){ $result [ "sex" ] = "女" ; } else { $result [ "sex" ] = "未知" ; } echo $fn . "('" . json_encode( $result ) . "')" ; |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述