关于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 submit()不能提交表单的解决方法
Apr 24 jQuery
jQuery实现动态添加、删除按钮及input输入框的方法
Apr 27 jQuery
jquery.masonry瀑布流效果
May 25 jQuery
jquery请求servlet实现ajax异步请求的示例
Jun 03 jQuery
jQuery.form.js的使用详解
Jun 14 jQuery
jQuery操作DOM_动力节点Java学院整理
Jul 04 jQuery
jquery.validate.js 多个相同name的处理方式
Jul 10 jQuery
JQuery元素快速查找与操作
Apr 22 jQuery
jQuery中DOM操作原则实例分析
Aug 01 jQuery
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
Nov 07 jQuery
jQuery实现弹出层效果
Dec 10 jQuery
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
Mar 31 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
慎用preg_replace危险的/e修饰符(一句话后门常用)
2013/06/19 PHP
php实现的SESSION类
2014/12/02 PHP
PHP中的traits实现代码复用使用实例
2015/05/13 PHP
使用PHP编写发红包程序
2015/07/22 PHP
PHP实现微信小程序人脸识别刷脸登录功能
2018/05/24 PHP
jQuery 隔行换色 支持键盘上下键,按Enter选定值
2009/08/02 Javascript
使用jQuery实现图片遮罩半透明坠落遮挡
2015/03/16 Javascript
浅析JavaScript 调试方法和技巧
2015/10/22 Javascript
JavaScript数组的一些奇葩行为
2016/01/25 Javascript
JQuery实现简单的服务器轮询效果实例
2016/03/31 Javascript
原生JS京东轮播图代码
2017/03/22 Javascript
浅析Angular2子模块以及异步加载
2017/04/24 Javascript
jQuery实现的简单在线计算器功能
2017/05/11 jQuery
JQuery 选择器、DOM节点操作练习实例
2017/09/28 jQuery
浅谈Vue响应式(数组变异方法)
2018/05/07 Javascript
JS html事件冒泡和事件捕获操作示例
2019/05/01 Javascript
JS去除字符串最后的逗号实例分析【四种方法】
2019/06/20 Javascript
websocket4.0+typescript 实现热更新的方法
2019/08/14 Javascript
JavaScript数组类型Array相关的属性与方法详解
2020/09/08 Javascript
[05:15]2018年度CS GO社区贡献奖-完美盛典
2018/12/16 DOTA
Python最长公共子串算法实例
2015/03/07 Python
安装python时MySQLdb报错的问题描述及解决方法
2018/03/20 Python
Django自定义用户登录认证示例代码
2019/06/30 Python
Python pandas自定义函数的使用方法示例
2019/11/20 Python
python如何操作mysql
2020/08/17 Python
python从ftp获取文件并下载到本地
2020/12/05 Python
详解Python遍历列表时删除元素的正确做法
2021/01/07 Python
HTML5公共页面提取作为公用代码的方法
2020/06/30 HTML / CSS
美国花布包包品牌:Vera Bradley
2017/08/11 全球购物
英国假发网站:Hothair
2018/02/23 全球购物
ASICS印度官方网站:日本专业运动品牌
2020/06/20 全球购物
仓库主管的岗位职责
2013/12/04 职场文书
声乐专业大学生职业生涯规划书:理想的未来需要自己去打造
2014/09/20 职场文书
工作失职造成投诉的检讨书范文
2014/10/05 职场文书
纪委立案决定书
2015/06/24 职场文书
python基础详解之if循环语句
2021/04/24 Python