关于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插件FusionCharts绘制的2D双面积图效果示例【附demo源码】
Apr 11 jQuery
jQuery使用eraser.js插件实现擦除、刮刮卡效果的方法【附eraser.js下载】
Apr 28 jQuery
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
Aug 01 jQuery
jquery+css实现简单的图片轮播效果
Aug 07 jQuery
深入研究jQuery图片懒加载 lazyload.js使用方法
Aug 16 jQuery
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
Oct 13 jQuery
浅析vue-router jquery和params传参(接收参数)$router $route的区别
Aug 03 jQuery
js jquery 获取某一元素到浏览器顶端的距离实现方法
Sep 05 jQuery
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
May 27 jQuery
jQuery实现弹出层效果
Dec 10 jQuery
jquery插件实现轮播图效果
Oct 19 jQuery
jQuery实现影院选座订座效果
Apr 13 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 学习路线与时间表
2010/02/21 PHP
PHP入门经历和学习过程分享
2014/04/11 PHP
ThinkPHP3.1新特性之对分组支持的改进与完善概述
2014/06/19 PHP
Yii把CGridView文本框换成下拉框的方法
2014/12/03 PHP
php 微信开发获取用户信息如何实现
2016/12/13 PHP
PHP简单实现遍历目录下特定文件的方法小结
2017/05/22 PHP
js实现网站首页图片滚动显示
2013/02/04 Javascript
禁止选中文字兼容IE、Chrome、FF等
2013/09/04 Javascript
JavaScript判断一个字符串是否包含指定子字符串的方法
2015/03/18 Javascript
JS工作中的小贴士之”闭包“与事件委托的”阻止冒泡“
2016/06/16 Javascript
AnjularJS中$scope和$rootScope的区别小结
2016/09/18 Javascript
原生JavaScript实现AJAX、JSONP
2017/02/07 Javascript
Vue-cli创建项目从单页面到多页面的方法
2017/09/20 Javascript
JS利用prototype给类添加方法操作详解
2019/06/21 Javascript
[01:10:57]Liquid vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python实现周期性抓取网页内容的方法
2015/11/04 Python
python+matplotlib绘制简单的海豚(顶点和节点的操作)
2018/01/02 Python
Django实现登录随机验证码的示例代码
2018/06/20 Python
Python标准库使用OrderedDict类的实例讲解
2019/02/14 Python
详解python中index()、find()方法
2019/08/29 Python
老生常谈CSS中的长度单位
2016/06/27 HTML / CSS
HTML5 Canvas实现放大镜效果示例
2020/03/25 HTML / CSS
移动端HTML5 input常见问题(小结)
2020/09/28 HTML / CSS
elf彩妆英国官网:e.l.f. Cosmetics英国(美国平价彩妆品牌)
2017/11/02 全球购物
德国汽车零件和汽车配件网上商店:kfzteile24
2018/11/14 全球购物
navabi英国:设计师大码女装
2019/06/25 全球购物
北京泡泡网网络有限公司.net面试题
2012/07/17 面试题
自我反省检讨书
2014/01/23 职场文书
少先队入队活动方案
2014/02/08 职场文书
2014年大班元旦活动方案
2014/02/26 职场文书
检查接待方案
2014/02/27 职场文书
学校运动会广播稿范文
2014/10/02 职场文书
五年级上册复习计划
2015/01/19 职场文书
2016年庆“七一”主题党日活动总结
2016/04/05 职场文书
接收函
2019/04/22 职场文书
创业计划书之熟食店
2019/10/16 职场文书