关于jQuery.ajax()的jsonp碰上post详解


Posted in jQuery onJuly 02, 2017

前言

以前一直以为当$.ajax()的 dataType设置为jsonp时,其method(请求方法)无论怎么设置,都会变成get,直到前两天遇到了一个坑。

下面来一起看看详细的介绍:

关于跨域请求与jsonp

  • 跨域:由于受到同源策略(协议、域名、端口三者必须全部相同)的影响,ajax请求会受到限制,要突破这种限制,跨域便产生了。跨域的解决方案有多种,这里不展开阐述,只是针对GET请求中的jsonp跨域解决方案做一下说明。
  • jsonp,本质上jsonp不是xhr异步请求,就是请求了一个js文件,因此在chrome的network面板中的xhr标签下看不到jsonp的跨域请求,在js标签下能看到。就是利用script标签中src不受同源策略的限制,前端定义了回调函数,请求的js脚本中获取数据,并执行前端的回调函数,因此前后端需要统一定义下回调函数名。
  • $.ajax中jsonp,$.ajax对jsonp进行了封装看起来像是ajax请求。由于jsonp是针对get请求的跨域解决,因此之前的经验告诉我,即使type设置了post,在jsonp的时候,也会自动转换成get,直到有一天踩了个坑。翻看$.ajax模块的源码发现,只有去手动设置crossDomain为true,或者实际上是跨域,才会设置为get。否则还是填入的type

关于jQuery.ajax()的jsonp碰上post详解

关于jQuery.ajax()的jsonp碰上post详解

结论:

手动设置crossDomain为true,或者真的是跨域,才会修改type为GET,否则还是传入的type参数

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

jQuery 相关文章推荐
jquery实现全选、全不选以及单选功能
Mar 23 jQuery
jQuery实现radio第一次点击选中第二次点击取消功能
May 15 jQuery
最常用的jQuery表单验证(简单)
May 23 jQuery
jQuery初级教程之网站品牌列表效果
Aug 02 jQuery
快速掌握jquery分页插件jqPaginator的使用方法
Aug 09 jQuery
jQuery实现的简单图片轮播效果完整示例
Feb 08 jQuery
jQuery实现简单的Ajax调用功能示例
Feb 15 jQuery
基于jquery实现的tab选项卡功能示例【附源码下载】
Jun 10 jQuery
Jquery让form表单异步提交代码实现
Nov 14 jQuery
jQuery+ThinkPHP实现图片上传
Jul 23 jQuery
jquery实现鼠标悬浮弹出气泡提示框
Dec 23 jQuery
jquery实现一个全局计时器(商城可用)
Jun 30 #jQuery
jQuery表单设置值的方法
Jun 30 #jQuery
jQuery开源组件BootstrapValidator使用详解
Jun 29 #jQuery
Vue.js列表渲染绑定jQuery插件的正确姿势
Jun 29 #jQuery
基于jQuery实现的Ajax 验证用户名唯一性实例代码
Jun 28 #jQuery
jQuery、layer实现弹出层的打开、关闭功能
Jun 28 #jQuery
各种选择框jQuery的选中方法(实例讲解)
Jun 27 #jQuery
You might like
一个连接两个不同MYSQL数据库的PHP程序
2006/10/09 PHP
php SQL防注入代码集合
2008/04/25 PHP
php下拉选项的批量操作的实现代码
2013/10/14 PHP
ThinkPHP中ajax使用实例教程
2014/08/22 PHP
php使用json_decode后数字对象转换成了科学计数法的解决方法
2017/02/20 PHP
laravel 解决后端无法获取到前端Post过来的值问题
2019/10/22 PHP
sencha touch 模仿tabpanel导航栏TabBar的实例代码
2013/10/24 Javascript
Javascript 遍历页面text控件详解
2014/01/06 Javascript
JQuery下拉框应用示例介绍
2014/04/23 Javascript
分享两段简单的JS代码防止SQL注入
2016/04/12 Javascript
jQuery树形控件zTree使用小结
2016/08/02 Javascript
js 实现获取name 相同的页面元素并循环遍历的方法
2017/02/14 Javascript
JS实现无缝循环marquee滚动效果
2017/05/22 Javascript
Vue添加请求拦截器及vue-resource 拦截器使用
2017/11/23 Javascript
Vue.js 事件修饰符的使用教程
2018/11/01 Javascript
jQuery实现带3D切割效果的轮播图功能示例【附源码下载】
2019/04/04 jQuery
JavaScript适配器模式原理与用法实例详解
2020/03/09 Javascript
[01:02]DOTA2辉夜杯决赛日 CDEC.Y对阵VG赛前花絮
2015/12/27 DOTA
[46:38]完美世界DOTA2联赛PWL S2 Magma vs PXG 第三场 11.28
2020/12/02 DOTA
Python tornado队列示例-一个并发web爬虫代码分享
2018/01/09 Python
在windows下Python打印彩色字体的方法
2018/05/15 Python
Python二维码生成识别实例详解
2019/07/16 Python
python实现连连看辅助之图像识别延伸
2019/07/17 Python
linux环境下Django的安装配置详解
2019/07/22 Python
TensorFlow低版本代码自动升级为1.0版本
2021/02/20 Python
成教毕业生自我鉴定
2013/10/23 职场文书
库房主管岗位职责
2013/12/31 职场文书
竞聘演讲稿开场白
2014/08/25 职场文书
2014幼儿园保育员工作总结
2014/11/10 职场文书
大学生入党自荐书
2015/03/05 职场文书
财务总监岗位职责范本
2015/04/03 职场文书
准备去美国留学,那么大学申请文书应该怎么写?
2019/08/12 职场文书
python基础之匿名函数详解
2021/04/21 Python
Python如何识别银行卡卡号?
2021/06/10 Python
详解Java实践之适配器模式
2021/06/18 Java/Android
CSS font-variation 可变字体的魅力(实例详解)
2022/03/03 HTML / CSS