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)相关推荐

  1. 什么是Ajax?Ajax如何发送请求(详)

    本篇来讲关于Ajax的内容,当然还有小伙伴可能不知道该怎么读 "Ajax",它读 "阿贾克斯" ,当然了读法可能因人而异,下面来进入正题,先来了解一下什么是Aj ...

  2. ajax ashx调试,asp.net——Ajax与ashx异步请求的简单案例

    Ajax与ashx异步请求的简单案例: 前台页面(aspx): function gettext() { var intxt = $("#intxt").val(); $.ajax ...

  3. jQuery中的ajax、jquery中ajax全局事件、load实现页面无刷新局部加载、ajax跨域请求jsonp、利用formData对象向服务端异步发送二进制数据,表单序列化(异步获取表单内容)

    jQuery中使用ajax: 在jQuery中使用ajax首先需要引入jQuery包,其引入方式可以采用网络资源,也可以下载包到项目文件中,这里推荐下载包到文件中:市面上有多个版本的jQuery库,这 ...

  4. 遍历数据元素作为参数发送ajax jsonp请求

    最近在做一个应用,获取数据库的图书显示一个列表,然后再根据isbn调用一个接口获取图书封面,因为这个接口是跨域的,所以需要发送jsonp请求,所以一开始在获取到图书的数据之后,想遍历这个数据,根据is ...

  5. ajax跨域请求Jsonp实现,使用jsonp实现ajax跨域请求

    Jsonp(JSON with Padding)是资料格式 json 的一种"使用模式",可以让网页从别的网域获取资料. 由于同源策略,一般来说位于 server1.example ...

  6. AJAX 跨域请求 - JSONP获取JSON数据

    Asynchronous JavaScript and XML (Ajax ) 是驱动新一代 Web 站点(流行术语为 Web 2.0 站点)的关键技术.Ajax 允许在不干扰 Web 应用程序的显示 ...

  7. 使用Script元素发送JSONP请求

    // 根据指定URL发送一个JSONP请求 //然后把解析得到的相应数据传递给回调函数 //在URL中添加一个名为jsonp的查询参数,用于指定该请求的回调函数的名称 function getJSON ...

  8. ajax jsonp请求报错not a function的解决方案

    ajax jsonp请求报错not a function的解决方案 参考文章: (1)ajax jsonp请求报错not a function的解决方案 (2)https://www.cnblogs. ...

  9. ajax的jsonp原理,jsonp 跨域原理和用法(上篇)

    出于对网站安全性的要求,两个不同域名的网站之间是不能通过前端技术互相发送请求的.但有时我们又需要使用这样的机制.比如:网站需要制作一个天气预报插件,或者需要开发两个网站,一个供外部用户使用,一个供内部 ...

最新文章

  1. linux脚本发送udp,基于shell脚本实现UDP端口探测
  2. 利用Apache ab以及GNUPlot来进行Web测试
  3. python写错了怎么更改-使用Python修改文件内容后如何保存更改
  4. PayPal Agility with Stability On OpenStack
  5. JVM-对象的存活与死亡
  6. 如何分辨PoE工业交换机是否标准供电
  7. JFreeChart API文档
  8. Guns 企业版多数据源配置集成dynamic-datasource
  9. OpenGL简介+一个简单的程序
  10. springcloud工作笔记099---springboot集成netty,进行线程管理,socket通讯
  11. 电脑重装系统Win11时间同步失败怎么办
  12. __new__()方法的使用和实例化
  13. Windows下nmap命令及Zenmap工具的使用方法
  14. Arduino STM32 JLink下载教程
  15. 16QAM的理论误码率仿真
  16. Surface pro3电源管理
  17. 搭建一个misskey实例
  18. ai修复照片软件是哪个软件_最近大火的AI修复照片是什么软件做出来的 其实可能就是这个小程序而已...
  19. 数据库---学生选课查询案例---经典查询题
  20. Django聚合分组查询(F与Q查询|ORM查询优化|常见字段参数)

热门文章

  1. SQL 语句耗时查询
  2. 手把手教你如何全新安装激活Win10系统
  3. 抢拍php并发处理,【活动预告】积分“大米”抢拍新一轮又要开始啦!
  4. C#Color对象的使用介绍及颜色对照表
  5. Bean named '' is expected to be of type '' but was actually of type 'com.sun.proxy.$Proxy30' 异常解决
  6. 2021年江西省安全员C证考试题及江西省安全员C证免费试题
  7. java面经——基础篇(1)
  8. catia打开后拖动工具栏有残影_Catia如何恢复工具栏布局
  9. 数据中心蓄冷时间的确定-孙长青
  10. 【JAVA程序设计】(C00002)servlet+jsp在线蛋糕店管理系统