关于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 相关文章推荐
JS与jQuery实现子窗口获取父窗口元素值的方法
Apr 17 jQuery
jQuery遮罩层实例讲解
May 11 jQuery
jQuery实现web页面樱花坠落的特效
Jun 01 jQuery
jQuery实现对网页节点的增删改查功能示例
Sep 18 jQuery
jQuery实现获取table中鼠标click点击位置行号与列号的方法
Oct 09 jQuery
jQuery.validate.js表单验证插件的使用代码详解
Oct 22 jQuery
jQuery+css last-child实现选择最后一个子元素操作示例
Dec 10 jQuery
jQuery选择器之基本选择器用法实例分析
Feb 19 jQuery
jquery 插件重新绑定的处理方法分析
Nov 23 jQuery
jQuery实现轮播图效果demo
Jan 11 jQuery
jQuery实现简单日历效果
Jul 05 jQuery
jquery实现广告上下滚动效果
Mar 04 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
用PHP调用Oracle存储过程的方法
2008/09/12 PHP
php access 数据连接与读取保存编辑数据的实现代码
2010/05/12 PHP
php+jquery编码方面的一些心得(utf-8 gb2312)
2010/10/12 PHP
PHP设置图片文件上传大小的具体实现方法
2013/10/11 PHP
php函数serialize()与unserialize()用法实例
2014/11/06 PHP
浅谈laravel中的关联查询with的问题
2019/10/10 PHP
验证用户是否修改过页面的数据的实现方法
2008/09/26 Javascript
jquery ajax学习笔记2 使用XMLHttpRequest对象的responseXML
2011/10/16 Javascript
JQuery显示隐藏页面元素的方法总结
2015/04/16 Javascript
Eclipse引入jquery报错如何解决
2015/12/01 Javascript
JQUERY表单暂存功能插件分享
2016/02/23 Javascript
javascript中去除数组重复元素的实现方法【实例】
2016/04/12 Javascript
JS 对java返回的json格式的数据处理方法
2016/12/05 Javascript
html+javascript+bootstrap实现层级多选框全层全选和多选功能
2017/03/09 Javascript
ActiveX控件的使用-js实现打印超市小票功能代码详解
2017/11/22 Javascript
vue cli 全面解析
2018/02/28 Javascript
不得不知的ES6小技巧
2018/07/28 Javascript
深入了解JavaScript代码覆盖
2019/06/13 Javascript
分享6个隐藏的python功能
2017/12/07 Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
2018/07/11 Python
解决pycharm运行出错,代码正确结果不显示的问题
2018/11/30 Python
python pytest进阶之conftest.py详解
2019/06/27 Python
pandas分区间,算频率的实例
2019/07/04 Python
python3实现用turtle模块画一棵随机樱花树
2019/11/21 Python
Python time库基本使用方法分析
2019/12/13 Python
Html5 canvas画图白板踩坑
2020/06/01 HTML / CSS
Sephora丝芙兰泰国官方网站:国际知名化妆品购物
2017/11/15 全球购物
雅诗兰黛澳大利亚官网:Estée Lauder澳大利亚
2019/05/31 全球购物
俄罗斯韩国化妆品网上商店:Cosmasi.ru
2019/10/31 全球购物
管理失职检讨书
2014/02/12 职场文书
岗位廉洁从业承诺书
2014/03/28 职场文书
2014最新党员违纪检讨书
2014/10/12 职场文书
工厂清洁工岗位职责
2015/02/14 职场文书
2015年七年级班主任工作总结
2015/05/21 职场文书
OpenCV-Python模板匹配人眼的实例
2021/06/08 Python
Python+OpenCV实现在图像上绘制矩形
2022/03/21 Python