关于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插件开发发送短信倒计时功能代码
May 09 jQuery
jquery实现用户登陆界面(示例讲解)
Sep 06 jQuery
JavaScript实现离开页面前提示功能【附jQuery实现方法】
Sep 26 jQuery
jQuery实现的页面遮罩层功能示例【测试可用】
Oct 14 jQuery
基于jquery trigger函数无法触发a标签的两种解决方法
Jan 06 jQuery
JQuery元素快速查找与操作
Apr 22 jQuery
jQuery实现模糊搜索功能的方法分析
Jun 29 jQuery
通过JQuery,JQueryUI和Jsplumb实现拖拽模块
Jun 18 jQuery
JavaScript实现的弹出遮罩层特效经典示例【基于jQuery】
Jul 10 jQuery
解决jquery validate 验证不通过后验证正确的信息仍残留在label上的方法
Aug 27 jQuery
jQuery操作动画完整实例分析
Jan 10 jQuery
jQuery实现B2B网站后台管理系统侧导航
Jul 08 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
德生9700DX电路分析
2021/03/02 无线电
php调用mysql数据 dbclass类
2011/05/07 PHP
基于php冒泡排序算法的深入理解
2013/06/09 PHP
php获取文件内容最后一行示例
2014/01/09 PHP
两种设置php载入页面时编码的方法
2014/07/29 PHP
php 模拟 asp.net webFrom 按钮提交事件实例
2014/10/13 PHP
php组合排序简单实现方法
2016/10/15 PHP
Laravel中的Auth模块详解
2017/08/17 PHP
JavaScript的document对象和window对象详解
2010/12/30 Javascript
js+css实现增加表单可用性之提示文字
2013/06/03 Javascript
JS增加行复制行删除行的实现代码
2013/11/09 Javascript
jquery插件冲突(jquery.noconflict)解决方法分享
2014/03/20 Javascript
JQuery给元素绑定click事件多次执行的解决方法
2014/05/29 Javascript
js判断手机和pc端选择不同执行事件的方法
2015/01/30 Javascript
jQuery实现的倒计时效果实例小结
2016/04/16 Javascript
jQuery的 $.ajax防止重复提交的两种方法(推荐)
2016/10/14 Javascript
详解vue中移动端自适应方案
2019/05/05 Javascript
通过jQuery学习js类型判断的技巧
2019/05/27 jQuery
vue实现搜索功能
2019/05/28 Javascript
JS实现使用POST方式发送请求
2019/08/30 Javascript
Vue如何获取数据列表展示
2019/12/11 Javascript
Python2.7下安装Scrapy框架步骤教程
2017/12/22 Python
Python3实现获取图片文字里中文的方法分析
2018/12/13 Python
在PyCharm中控制台输出日志分层级分颜色显示的方法
2019/07/11 Python
Python安装与卸载流程详细步骤(图解)
2020/02/20 Python
Python3基于print打印带颜色字符串
2020/07/06 Python
canvas绘制圆角头像的实现方法
2019/01/17 HTML / CSS
Jacadi Paris英国官网:法国童装品牌
2019/08/09 全球购物
超级英雄、电影和电视、乐队和音乐T恤:Loud Clothing
2019/09/01 全球购物
职高毕业生自我鉴定
2013/10/21 职场文书
项目建议书范文
2014/05/12 职场文书
职工擅自离岗检讨书
2014/09/23 职场文书
新生儿未入户证明
2015/06/23 职场文书
中学校园广播稿
2015/08/18 职场文书
职工的安全责任书范文!
2019/07/02 职场文书
低端且暴利的线上线下创业项目分享
2019/09/03 职场文书