Ajax基础:发送jsonp请求(jsonp、jsonCallback)
jsonp走的是get请求方式,也就是ajax的默认请求方式;
ajax方法中也涵盖了jsonp请求,可以通过ajax方法来发送jsonp请求;
<!--客户端代码-->
<body><button id="btn">发送jsonp请求</button><script src="js/jquery-3.5.1.min.js"></script><script>$('#btn').on('click', function() {$.ajax({url: '/jsonp',// 代表要发送jsonp请求而再是ajax请求dataType: 'jsonp',success: function(response) {console.log(response);}})})</script>
</body>
// 服务端代码,服务端对于jsonp请求可以使用jsonp做出响应
app.get('/jsonp', (req, res) => {res.jsonp({name: 'xibing_G',age: 20})
})
jsonp请求方案会在客户端的全局作用域下准备一个函数,将函数名传递给服务端,服务端会返回函数调用代码;如果服务端返回了数据,那么就会调用success对应的函数,并且将数据传递给success函数,在success函数内部就可以对数据进行处理。
它会判断这个是不是一个函数,如果是,就将响应数据作为函数的实参传递进去给到客户端
属性jsonp(当然,例外一般都是不常被用到)
由上面可以看出会有默认的请求函数callback的生成,服务端也会有默认的响应
但也会有存在例外,有的服务器就不是通过callback来接收客户端传递过来的函数名称的
比如简写为:cb;此时客户端就需要更改默认的callback,改为与服务端对应的cb或者其他值
这个时候jsonp属性就有用了,jsonp属性值就是指定的函数参数名 jsonp:'cb'
属性jsonCallback(当然,例外一般都是不常被用到,平时使用success即可)
请求成功会调用success,如果不想调用它,当然也可以自定义其他方法供其调用;
这个时候jsonCallback属性就拥有了,jsonCallback属性值就是函数名 jsonCallback:'fn'
说白了:jsonCallback的值其实就是用于调用的那个全局作用域的函数的名称
<body><button id="btn">发送jsonp请求</button><script src="js/jquery-3.5.1.min.js"></script><script>function fn(response) {console.log('源于fn的');}$('#btn').on('click', function() {$.ajax({url: '/jsonp',// 向服务器端传递函数名字的参数名称,默认是callbackjsonp: 'cb',// 正常是调用success,如果想自行调用其他的,就在这里填写函数名jsonpCallback: 'fn',dataType: 'jsonp',success: function(response) {}})})</script>
</body>
客户端做出了调整(函数参数名、函数名),那么服务端就不能再使用默认的jsonp了
app.get('/jsonp', (req, res) => {const cb = req.query.cb;const data = cb + "({name:'Xibing'})";res.send(data);
})
控制台可以正常输出服务端响应的数据,请求URL中的函数参数名也改成了和服务端一致的‘cb’
Ajax基础:发送jsonp请求(jsonp、jsonCallback)相关推荐
- 什么是Ajax?Ajax如何发送请求(详)
本篇来讲关于Ajax的内容,当然还有小伙伴可能不知道该怎么读 "Ajax",它读 "阿贾克斯" ,当然了读法可能因人而异,下面来进入正题,先来了解一下什么是Aj ...
- ajax ashx调试,asp.net——Ajax与ashx异步请求的简单案例
Ajax与ashx异步请求的简单案例: 前台页面(aspx): function gettext() { var intxt = $("#intxt").val(); $.ajax ...
- jQuery中的ajax、jquery中ajax全局事件、load实现页面无刷新局部加载、ajax跨域请求jsonp、利用formData对象向服务端异步发送二进制数据,表单序列化(异步获取表单内容)
jQuery中使用ajax: 在jQuery中使用ajax首先需要引入jQuery包,其引入方式可以采用网络资源,也可以下载包到项目文件中,这里推荐下载包到文件中:市面上有多个版本的jQuery库,这 ...
- 遍历数据元素作为参数发送ajax jsonp请求
最近在做一个应用,获取数据库的图书显示一个列表,然后再根据isbn调用一个接口获取图书封面,因为这个接口是跨域的,所以需要发送jsonp请求,所以一开始在获取到图书的数据之后,想遍历这个数据,根据is ...
- ajax跨域请求Jsonp实现,使用jsonp实现ajax跨域请求
Jsonp(JSON with Padding)是资料格式 json 的一种"使用模式",可以让网页从别的网域获取资料. 由于同源策略,一般来说位于 server1.example ...
- AJAX 跨域请求 - JSONP获取JSON数据
Asynchronous JavaScript and XML (Ajax ) 是驱动新一代 Web 站点(流行术语为 Web 2.0 站点)的关键技术.Ajax 允许在不干扰 Web 应用程序的显示 ...
- 使用Script元素发送JSONP请求
// 根据指定URL发送一个JSONP请求 //然后把解析得到的相应数据传递给回调函数 //在URL中添加一个名为jsonp的查询参数,用于指定该请求的回调函数的名称 function getJSON ...
- ajax jsonp请求报错not a function的解决方案
ajax jsonp请求报错not a function的解决方案 参考文章: (1)ajax jsonp请求报错not a function的解决方案 (2)https://www.cnblogs. ...
- ajax的jsonp原理,jsonp 跨域原理和用法(上篇)
出于对网站安全性的要求,两个不同域名的网站之间是不能通过前端技术互相发送请求的.但有时我们又需要使用这样的机制.比如:网站需要制作一个天气预报插件,或者需要开发两个网站,一个供外部用户使用,一个供内部 ...
最新文章
- linux脚本发送udp,基于shell脚本实现UDP端口探测
- 利用Apache ab以及GNUPlot来进行Web测试
- python写错了怎么更改-使用Python修改文件内容后如何保存更改
- PayPal Agility with Stability On OpenStack
- JVM-对象的存活与死亡
- 如何分辨PoE工业交换机是否标准供电
- JFreeChart API文档
- Guns 企业版多数据源配置集成dynamic-datasource
- OpenGL简介+一个简单的程序
- springcloud工作笔记099---springboot集成netty,进行线程管理,socket通讯
- 电脑重装系统Win11时间同步失败怎么办
- __new__()方法的使用和实例化
- Windows下nmap命令及Zenmap工具的使用方法
- Arduino STM32 JLink下载教程
- 16QAM的理论误码率仿真
- Surface pro3电源管理
- 搭建一个misskey实例
- ai修复照片软件是哪个软件_最近大火的AI修复照片是什么软件做出来的 其实可能就是这个小程序而已...
- 数据库---学生选课查询案例---经典查询题
- Django聚合分组查询(F与Q查询|ORM查询优化|常见字段参数)
热门文章
- SQL 语句耗时查询
- 手把手教你如何全新安装激活Win10系统
- 抢拍php并发处理,【活动预告】积分“大米”抢拍新一轮又要开始啦!
- C#Color对象的使用介绍及颜色对照表
- Bean named '' is expected to be of type '' but was actually of type 'com.sun.proxy.$Proxy30' 异常解决
- 2021年江西省安全员C证考试题及江西省安全员C证免费试题
- java面经——基础篇(1)
- catia打开后拖动工具栏有残影_Catia如何恢复工具栏布局
- 数据中心蓄冷时间的确定-孙长青
- 【JAVA程序设计】(C00002)servlet+jsp在线蛋糕店管理系统